我有一个存储过程,可以查找所有现有数据库并从每个数据库的表中读取数据。
有没有一种方法可以授予登录对所有数据库以及所有 future 数据库的读取访问权限,即添加新数据库时我不必执行任何操作?
有可用的服务器角色吗?有没有办法让 SQL 代理作业添加对任何新数据库的权限?或者还有其他方法吗?
最佳答案
对于新数据库,请在模型数据库中添加用户。这用作所有新数据库的模板。
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'', ''...''
'
关于SQL Server - 授予对所有现有和 future 数据库进行读取访问的登录权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3550497/