通过T-SQL为链接服务器创建登录和用户

时间:2014-05-07 08:31:29

标签: sql sql-server linked-server

我想创建一个存储过程,可以为本地服务器和链接服务器创建MSSQL登录和用户,并且检查策略为OFF。

使用CREATE LOGIN和CREATE USER在本地服务器上创建登录和用户没有问题,但我不知道如何为链接服务器使用CREATE LOGIN和CREATE USER。

我曾尝试将sp_addlogin和sp_adduser用于链接服务器,但密码策略失败。

有没有办法在链接服务器中运行CREATE LOGIN和CREATE USER?下面是我在动态SQL中的代码。

SELECT @SqlCreateLogin = 'USE '+ @dbDatabase + ';
    CREATE LOGIN [' + @loginName + '] 
    WITH PASSWORD = '''+@password+''',
    DEFAULT_DATABASE=[master], 
    DEFAULT_LANGUAGE=[us_english],
    CHECK_POLICY=OFF'   
EXEC sp_executesql @SqlCreateLogin


SELECT @SqlCreateUser = 
    'USE ' + @dbDatabase + ';
    CREATE USER [' + @loginName + '] FOR LOGIN [' + @loginName +']'
EXEC sp_executesql @SqlCreateUser

1 个答案:

答案 0 :(得分:0)

我刚刚解决了类似案件。链接的服务器也是动态传递的。小心引号:

    DECLARE @query nvarchar(1000)
    SET @query = 'EXEC (''CREATE LOGIN [' + @user + '] WITH PASSWORD=N''''' +
        @password + ''''', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF,
        CHECK_POLICY=OFF'') AT [' + @linkedserver + ']'
    EXEC sp_Executesql @query

类似于添加用户和角色:

    SET @query = 'EXEC (''USE [' + @database + '];CREATE USER [' + 
        @user + '] FOR LOGIN [' + @user + ']'') AT [' + @linkedserver + ']'

    SET @query = 'EXEC (''USE [' + @database + '];ALTER ROLE [db_datareader] 
    ADD MEMBER [' + @user + ']'') AT [' + @linkedserver + ']'