我知道这个问题已经被问过很多次了,但他们都 3 岁以上了,所以我想再问一次,碰碰运气。
我需要向 MSSQL 服务器上的所有数据库授予读取权限。我想使用服务器角色来实现这一点。
我已经创建了具有以下权限的服务器角色
CREATE SERVER ROLE ReadOnlyAccess
GO
GRANT VIEW ANY DEFINITION TO ReadOnlyAccess
Go
GRANT VIEW ANY DATABASE TO ReadOnlyAccess
GO
GRANT VIEW SERVER STATE TO ReadOnlyAccess
GO
GRANT CONNECT SQL TO ReadOnlyAccess;
GO
Run Code Online (Sandbox Code Playgroud)
将用户分配给此角色允许我连接到服务器但不扩展任何数据库。我认为“授予查看任何数据库”将是赋予这些权利的权利,但我错了......
有没有一种方法可以实现此目的,而无需在每个数据库上为用户授予 db_datareader 数据库角色?新的数据库不断被创建,因此手动执行此操作将是一场噩梦。我猜想创建一个每隔几个小时运行一次的作业就可以解决问题,但我仍然宁愿通过服务器角色来完成它。
有任何想法吗?我使用的是 SQL 2016 及更高版本。