日期:2014-05-18  浏览次数:20484 次

如何用xp_cmdshell 执行 同步时间的命令行
我的sql2000,2005,2008都装了。

拿sql2005来说,我在master数据库下,执行

xp_cmdshell 'time' 执行成功

但是执行

xp_cmdshell 'net time \\192.168.0.22 /set /y' 不能成功执行,

我在网上查了原因是,我的sql的服务开启的用户的原因,默认用的用户是 local system

--参考资料--------------------------------------------------
SQL Server中启动帐户分两类:1.内建帐户(Local System,Local Service,Network Service)  
  2.指定帐户(Domain Account)

在此简要说明一下内建帐户的使用: 
  Local System具有最高的讯问控制权限,可以对本机磁盘上的任何文件系统进行操作,权限较高,风险较大,可以作为任意服务的启动帐户
  Local Service具有于指定帐户相同的权限,但是较Local System权限较低,可以用于SQL Agent的启动帐户,但是不可以做为SQL Server DataBase Engine的启动帐户
  Network Service权限介于毅两者之间,可以做为最佳的Windows NT帐户认证 下的SQL Server启动帐户使用
------------------------------------------------------------  
 就是说local system没有访问网络的权限,但是我改成Network Service 作为登录服务的用户后,可以执行 xp_cmdshell 'net time \\192.168.0.22’

但是不能执行xp_cmdshell 'net time \\192.168.0.22 /set /y',因为Network Service用户本地权限不足。

怎么样让sql既有 Local System的本地权限,又有Network Service的网络访问权限。


或者怎样设置 能够在我的sql中 成功运行 xp_cmdshell 'net time \\192.168.0.22 /set /y' 同步192.168.0.22 的时间为我电脑的时间。(在cmd里面运行 net time \\192.168.0.22 /set /y 是没有问题的)。我只想知道sql中怎么实现?

------解决方案--------------------
建一个用户,属于上面两个群组就可以了^^
把这个用户设置为启动帐户