Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 为什么我可以从SQL Server运行.bat而不是.exe?_Sql Server_Exe_Xp Cmdshell - Fatal编程技术网

Sql server 为什么我可以从SQL Server运行.bat而不是.exe?

Sql server 为什么我可以从SQL Server运行.bat而不是.exe?,sql-server,exe,xp-cmdshell,Sql Server,Exe,Xp Cmdshell,我可以从命令行运行my.exe。我可以用球棒跑。但是,当我尝试在SQL Server中运行它们时,.exe似乎从未运行过 exec master..xp_cmdshell '\\fs01\filefolder\runpgm.bat' echo %date% %TIME% >> \\fs01\filefolder\test.txt \\fs01\filefolder\CallClickSoftWS.exe >> \\fs01\filefolder\test.txt ech

我可以从命令行运行my.exe。我可以用球棒跑。但是,当我尝试在SQL Server中运行它们时,.exe似乎从未运行过

exec master..xp_cmdshell '\\fs01\filefolder\runpgm.bat'
echo %date% %TIME% >> \\fs01\filefolder\test.txt
\\fs01\filefolder\CallClickSoftWS.exe >> \\fs01\filefolder\test.txt
echo %date% %TIME% >> \\fs01\filefolder\test.txt
echo "Done" >> \\fs01\filefolder\test.txt
exit
它确实运行.bat,但它运行的.exe永远不会运行

exec master..xp_cmdshell '\\fs01\filefolder\runpgm.bat'
echo %date% %TIME% >> \\fs01\filefolder\test.txt
\\fs01\filefolder\CallClickSoftWS.exe >> \\fs01\filefolder\test.txt
echo %date% %TIME% >> \\fs01\filefolder\test.txt
echo "Done" >> \\fs01\filefolder\test.txt
exit

如果我从命令行运行'\fs01\filefolder\runpgm.bat',那么它可以正常工作

我只是将此添加为代码格式的一个答案,但请尝试将您的
exec
包装在一个try-catch中,以便查看问题所在

BEGIN TRY
    exec master..xp_cmdshell '\\fs01\filefolder\runpgm.bat'
END TRY
BEGIN CATCH 
    SELECT @ERROR_MESSAGE()
END CATCH

根本原因:.Net版本未安装在SQL Server上

详细说明:


SQL Server未显示错误。权力壳也不例外。若要在SQL Server使用master..xp\u cmdshell以静默方式失败时进行调试,则需要退出SQL Server并使用[DOS]命令shell进行调试。命令shell确实会弹出一个对话框,通知用户未安装.Net版本。当然,您需要远程访问SQL Server计算机才能尝试此操作。:-)

@closer,你的投票不成熟。这是一个完全正确(有趣)的问题。根据我的经验,它应该是有效的。运行此命令并告诉我们结果是什么,
EXEC master..xp\u cmdshell'whoami
尝试在bat的开头添加“pushd”%~dp0”,在文件的结尾添加“popd”,并告诉我们它是否解决了问题whoami有效,并给出了两行:cpi\sqlsvc NULLpushd和popd似乎没有做任何事情。谢谢。不幸的是,没有引发异常。现在,如果我在.bat文件中有一行错误的代码,那么在错误的行后面会有一个结果行,比如:“REW”不被识别为内部或外部命令,