Jas*_*ber 3 sql-server read-only-database
当我设置我的数据库时,我创建了一个我的应用程序运行的 sql 用户。sql 用户获得对服务器上所有数据库的只读访问权限。问题是用户将来不会对任何新创建的数据库具有只读访问权限。还有另一个应用程序可以为用户创建这些新数据库,但我无法将我的用户脚本添加到创建的模板数据库中。有没有办法自动更新 sql 用户以供将来使用只读?SQL 服务器 2014。
参考: 模型数据库
模型数据库用作在 SQL Server 实例上创建的所有数据库的模板。由于每次启动 SQL Server 时都会创建 tempdb,因此模型数据库必须始终存在于 SQL Server 系统上。模型数据库的全部内容,包括数据库选项,都被复制到新数据库中。model 的一些设置也用于在启动时创建新的 tempdb,因此 model 数据库必须始终存在于 SQL Server 系统上。
将用户添加到您的model数据库db_datareader角色。所有未来的数据库都将模仿此特权。
USE [model]
GO
CREATE USER [sqllogin1] FOR LOGIN [sqllogin1]
GO
USE [model]
GO
ALTER ROLE [db_datareader] ADD MEMBER [sqllogin1]
GO
Run Code Online (Sandbox Code Playgroud)
运行此 sqllogin1 用户后,将在所有新数据库中创建该用户,并将成为db_datareader角色的成员。
上述答案仅适用于新创建的数据库,不适用于恢复的数据库。
相反,请授予他们以下权限:
GRANT CONNECT ANY DATABASE TO myloginname;
GRANT SELECT ALL USER SECURABLES TO myloginname;
Run Code Online (Sandbox Code Playgroud)
这将赋予他们对所有添加的数据库的权限 - 即使他们的登录名不在数据库中。第二个角色是在 SQL Server 2014 中添加的。