我在SQL 2012服务器上获得了一个Active Directory用户列表(domain \ user1,domain \ user2)和一个数据库列表(DB1,DB2),这些用户需要具有读访问权限。我想为每个数据库上的所有AD用户创建一个脚本:
我已将以下脚本放在一起,该脚本适用于一个用户,但我希望它也适用于多个用户。那可能吗?
EXEC sp_MSforeachdb '
IF ''?'' IN(''DB1'',''DB2'')
BEGIN
USE [?];
PRINT ''Processing '' + DB_NAME();
IF NOT EXISTS (SELECT name FROM master.sys.server_principals WHERE name = "Domain\User1")
BEGIN
PRINT ''Create Login [Domain\User1]''
CREATE LOGIN [Domain\User1] FROM WINDOWS WITH DEFAULT_DATABASE = [master];
END
IF NOT EXISTS (SELECT * FROM sys.database_principals WHERE name = "Domain\User1")
BEGIN
PRINT ''Create User [Domain\User1]''
CREATE USER [Domain\User1] FROM LOGIN [Domain\User1]
END
EXEC sp_addrolemember ''db_datareader'', ''Domain\User1'';
END';
N.B。我知道AD组是另一种选择,但此任务特定于AD用户。