当前位置: 代码迷 >> Sql Server >> 在查询分析器中可以执行 EXEC master.dbo.xp_cmdshell 'd:\ab\p.exe beep' 为什么将它移到触发器中却不能执行?解决思路
  详细解决方案

在查询分析器中可以执行 EXEC master.dbo.xp_cmdshell 'd:\ab\p.exe beep' 为什么将它移到触发器中却不能执行?解决思路

热度:554   发布时间:2016-04-27 18:44:49.0
在查询分析器中可以执行 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
  相关解决方案