在查询分析器中可以执行 EXEC master.dbo.xp_cmdshell 'd:\ab\p.exe beep' 为什么将它移到触发器中却不能执行?
在查询分析器中可以执行 EXEC master.dbo.xp_cmdshell 'd:\ab\p.exe beep' 为什么将它移到触发器中却不能执行?老是提示遇到异常。
------解决方案-----------------------tyr:
EXEC master.dbo.xp_cmdshell 'd:\ab\p.exe beep',no_output
------解决方案--------------------
除了权限,可以查一下exe文件是否需要其它文件的支持,比如一些ini,或config或xml.可能是由于路径引起的.
使用 xp_cmdshell 调用文件时会定位到文件指定目录找到文件,但执行路径在 %system root% 下面,以win2003为例是在 windows/system32下. 所以从外部执行正确,而sql中有权限的帐号执行时会异常,一般都是这个问题引起的.
如果你确定你的exe读取了对应的一些配置文件或其它的依赖文件或程序集,那么解决方法:
1,将其它文件拷贝到 %system root%下.
2,或者建批处理文件即.bat文件, .bat文件在要执和地文件前面加一句path指令: path=d:\ab