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

标签 sql sql-server security sql-server-2008 roles

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

有没有一种方法可以授予登录对所有数据库以及所有 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/

相关文章:

javascript - 为什么服务器不应该使用 JSON 数组进行响应?

sql - 缓慢的 Informix COUNT/GROUP BY 查询,即使有适当的索引

mysql - 在数据库中创建关系和外键

c# - 每个月有两个日期的日子

sql - 如何在sql中连接具有相同id的多行?

sql - 删除约束不起作用

SQL:通过 Postgres 语句翻译递归连接时出现问题

java - 在 jooq groupConcatDistinct 方法上指定分隔符

c# - 从密码字符串派生加密 key 和 IV 时,可以使用密码的 SHA1 散列作为盐吗?

c++ - 寻找一种安全、便携的密码存储方法