我想创建一个存储过程,可以为本地服务器和链接服务器创建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
答案 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 + ']'