![MSSQL db_datareader 到所有数据库](https://linux22.com/image/544137/MSSQL%20db_datareader%20%E5%88%B0%E6%89%80%E6%9C%89%E6%95%B0%E6%8D%AE%E5%BA%93.png)
我在 MSSQL 2008 Server 中有 100 个数据库。我需要创建一个只读用户来读取所有这些数据库。是否有一个服务器范围的角色:db_datareader,我可以将该用户分配给该角色,这样我就不需要遍历每个数据库来添加用户映射。
谢谢,蒂姆
对于可能有帮助的人来说,这是我的最终脚本:
--You will need Server Level's Login user123 created first.
-- >=7 filtered out the system database, use this to find out your number
-- EXEC sp_MSForEachDB 'use ? SELECT DB_ID(), DB_NAME()'
EXEC sp_MSForEachDB
'USE ?
IF DB_ID() >= 7
BEGIN
CREATE USER user123 FOR LOGIN user123
EXEC sp_addrolemember db_datareader, user123
END
'
答案1
EXEC sp_MSForEachDB
'USE ?
IF DBID() >= 5 EXEC sp_addrolemember ''db_datareader'', ''MyUser'' '