虽然这可能是许多人很容易,我浪费时间做这样一个巨大的数额......和疑难杂症不明显......希望这可以帮助别人。
(上SQL2012测试)
第1步:其实能够在SQL Server中的xp_cmdshell的功能
USE master
Go
EXEC sp_configure 'show advanced options', 1
Go
RECONFIGURE
Go
EXEC sp_configure 'xp_cmdshell', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'show advanced options', 0
Go
RECONFIGURE
Go
第2步:运行DOS “WHOAMI/all” 命令使用xp_cmdshell的和我们的两个服务站命令
EXEC xp_cmdshell 'whoami /all'
exec xp_cmdshell 'net stop MR2012ApplicationService';
exec xp_cmdshell 'net stop MR2012ProcessService';
在其他位中,这将显示我的执行上下文是“nt authority \ network service S-1-5-20”。显示的帐户必须具有正在重新启动的服务的权限。另外两个命令,都试图停止服务失败的原因权限:
System error 5 has occurred.
Access is denied.
步骤3:用SUBINACL,让我们来看看对服务的权限,我们开始之前。因为这是我遇到麻烦的地方,所以请确保我们知道SUBINACL.exe的完整路径。
where SUBINACL
SUBINACL.exe /SERVICE MR2012ProcessService /DISPLAY
如果你有同样的问题我有,你会看到路径SUBINACL是无论你可能以前提取的“Windows Server 2003 Resource Kit工具”(这是我的开发机),并且是4.0版本。 1.1604。也就是说,请注意“NT权限\网络服务”没有权限。罗杰?罗杰!
第4步:让我们授予这些权限!
SUBINACL.exe /SERVICE MR2012ApplicationService /GRANT="nt authority\network service"=LQSTOP
SUBINACL.exe /SERVICE MR2012ProcessService /GRANT="nt authority\network service"=LQSTOP
第5步:密切关注这两个命令的输出!看起来他们看起来并不怎么样,是吗?
+SERVICE MR2012ApplicationService
/GRANT=nt authority\network service=LQSTOP
Elapsed Time: 00 00:00:00
Done: 0, Modified 0, Failed 0, Syntax errors 0
嗯。那么,既然我们看着权限之前,我们开始了,让我们来看看他们现在是什么样子:
SUBINACL.exe /SERVICE MR2012ProcessService /DISPLAY
嗯,这是瘸子。它没有工作!那么,事实证明,我浪费了大量的时间尝试各种疯狂的业务,并且问题的根源是SUBINACL中的一个已知错误!
第6步:让我们获得最新版本,并将其安装到C:\开发\工具:
https://www.microsoft.com/en-us/download/details.aspx?id=23510
安装之后,让我们重新检查路径/版本exe文件。
where SUBINACL
嗯,它是相同的版本,但现在有一个SUBINACL.exe.old。
第7步:让我们再次尝试这些权限授予!输出现在应该是这样的:
MR2012ApplicationService : new ace for DOMAIN\MyProxyAccount
MR2012ApplicationService : 1 change(s)
Elapsed Time: 00 00:00:00
Done: 1, Modified 1, Failed 0, Syntax errors 0
Last Done : MR2012ApplicationService
还有一个皱纹;执行账户将成为sql server的服务账户(即nt authority \ network service)。但是,如果不需要,可以设置代理。
第8步:设置代理帐户已经被设置是这样的:
EXEC sp_xp_cmdshell_proxy_account 'DOMAIN\MyProxyAccount', '[email protected]';
需要明确的是,这不是我的设置,只是我它是如何工作的理解。
第9步:当然,这个代理帐户必须有权限:
C:\Dev\Tools\SUBINACL.exe /SERVICE MR2012ApplicationService /GRANT=DOMAIN\MyProxyAccount=LQSTOP
C:\Dev\Tools\SUBINACL.exe /SERVICE MR2012ProcessService /GRANT=DOMAIN\MyProxyAccount=LQSTOP
此外,服务帐户需要“登录为批处理作业”的地方政策。
问候,
斯图尔特
我已阅读文档,并知道错误的原因,但我仍然不知道如何操作它。我使用网络'cmd'中的localgroup'列出用户组,并且我不知道应该将哪个用户添加到管理员组中?使用'net localgroup/add administrator username' – Dolphin