我正在尝试创建一个PowerShell脚本,允许我为不同文化中的登录设置服务器角色。
更具体地说,我想将 sysadmin
角色授予登录 NT AUTHORITY\SYSTEM
和 NT AUTHORITY\NETWORK SERVICE
。到目前为止,我已经使用SQL脚本完成了这项工作。但是,我发现这个脚本不适用于德语Windows安装,因为这两个登录名为 NT-AUTORITÄT\SYSTEM
和 NT-AUTORITÄT\Netzwerkdienst
分别在那里。
我已经发现这些登录的SID分别为 S-1-5-18
和 S-1-5-20
,但我不知道我是怎么做的我可以利用这个优势。
这是我到目前为止使用的SQL脚本:
PRINT 'Granting sysadmin role to NT AUTHORITY\SYSTEM...'
IF NOT EXISTS
(
SELECT name
FROM master.sys.server_principals
WHERE IS_SRVROLEMEMBER ('sysadmin', name) = 1
AND name LIKE 'NT AUTHORITY\SYSTEM'
)
EXEC master..sp_addsrvrolemember
@loginame = N'NT AUTHORITY\SYSTEM', @rolename = N'sysadmin'
PRINT 'Granting sysadmin role to NT AUTHORITY\NETWORK SERVICE...'
IF NOT EXISTS
(
SELECT name
FROM master.sys.server_principals
WHERE IS_SRVROLEMEMBER ('sysadmin', name) = 1
AND name LIKE 'NT AUTHORITY\NETWORK SERVICE'
)
EXEC master..sp_addsrvrolemember
@loginame = N'NT AUTHORITY\NETWORK SERVICE', @rolename = N'sysadmin'
如上所述,存在的问题是它不适用于除英语之外的其他文化。我已经尝试使用SQLPS和SqlServer为此创建PowerShell脚本,但在那里没有取得多大进展。
有人可以帮我这个吗?
提前致谢, Kira Resari
答案 0 :(得分:0)
使用Jeroen Mostert的评论,我能够拼凑出以下解决方案,该解决方案现在适用于Windows的英语和德语安装。我很确定它也适用于其他文化:
DECLARE @user_name_nt_authority_system NVARCHAR(MAX)
DECLARE @user_name_nt_authority_network_service NVARCHAR(MAX)
SET @user_name_nt_authority_system = SUSER_SNAME(0x010100000000000512000000)
SET @user_name_nt_authority_network_service = SUSER_SNAME(0x010100000000000514000000)
PRINT 'Granting sysadmin role to NT AUTHORITY\SYSTEM...'
IF NOT EXISTS
(
SELECT name
FROM master.sys.server_principals
WHERE IS_SRVROLEMEMBER ('sysadmin', name) = 1
AND name LIKE @user_name_nt_authority_system
)
EXEC master..sp_addsrvrolemember
@loginame = @user_name_nt_authority_system, @rolename = N'sysadmin'
PRINT 'Granting sysadmin role to NT AUTHORITY\NETWORK SERVICE...'
IF NOT EXISTS
(
SELECT name
FROM master.sys.server_principals
WHERE IS_SRVROLEMEMBER ('sysadmin', name) = 1
AND name LIKE @user_name_nt_authority_network_service
)
EXEC master..sp_addsrvrolemember
@loginame = @user_name_nt_authority_network_service, @rolename = N'sysadmin'