SQL Server 自动为新数据库提供只读权限

Jas*_*ber 3 sql-server read-only-database

当我设置我的数据库时,我创建了一个我的应用程序运行的 sql 用户。sql 用户获得对服务器上所有数据库的只读访问权限。问题是用户将来不会对任何新创建的数据库具有只读访问权限。还有另一个应用程序可以为用户创建这些新数据库,但我无法将我的用户脚本添加到创建的模板数据库中。有没有办法自动更新 sql 用户以供将来使用只读?SQL 服务器 2014。

Sql*_*ide 7

参考: 模型数据库

模型数据库用作在 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角色的成员。


Bre*_*zar 4

上述答案仅适用于新创建的数据库,不适用于恢复的数据库。

相反,请授予他们以下权限:

GRANT CONNECT ANY DATABASE TO myloginname;
GRANT SELECT ALL USER SECURABLES TO myloginname;
Run Code Online (Sandbox Code Playgroud)

这将赋予他们对所有添加的数据库的权限 - 即使他们的登录名不在数据库中。第二个角色是在 SQL Server 2014 中添加的。