如何创建多个SQL登录,用户并将其分配给多个数据库中的角色?

时间:2017-03-04 05:22:19

标签: sql-server tsql

我在SQL 2012服务器上获得了一个Active Directory用户列表(domain \ user1,domain \ user2)和一个数据库列表(DB1,DB2),这些用户需要具有读访问权限。我想为每个数据库上的所有AD用户创建一个脚本:

  • 创建登录信息
  • 创建用户并将其映射到登录
  • 将用户添加到db_datareader角色

我已将以下脚本放在一起,该脚本适用于一个用户,但我希望它也适用于多个用户。那可能吗?

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用户。

0 个答案:

没有答案