一尘不染

SQL Server-授予对所有现有数据库和将来数据库的读取访问权限的登录权限

sql

我有一个存储过程,该过程可以找到所有现有数据库并从每个数据库的表中读取数据。

有没有一种方法可以使我对所有数据库以及将来的所有数据库都具有登录读取访问权限,即在添加新数据库时我无需执行任何操作?

有服务器角色可以工作吗?有没有一种方法可以使SQL代理作业在任何新数据库上添加权限?还是有其他方法?


阅读 215

收藏
2021-03-10

共1个答案

一尘不染

对于新数据库,将用户添加到模型数据库中。这用作所有新数据库的模板。

USE model
CREATE USER ... FROM LOGIN...
EXEC sp_addrolemember 'db_datareader', '...'

对于现有数据库,请使用sp_MSForEachDb

EXEC sp_MSForEachDb '
 USE ?
 CREATE USER ... FROM LOGIN...  
 EXEC sp_addrolemember ''db_datareader'', ''...''
'
2021-03-10