从SQL Server运行可执行文件

时间:2012-07-13 11:18:13

标签: c# sql-server sql-server-2008

我一直坚持研究运行外部exe文件。到目前为止我发现它可以使用 这样:

EXEC master..xp_cmdshell '"C:\New Folder\test.exe"'

并且这不能在触发器中直接调用,因为它必须等到执行完成才能完成触发器。

因此鼓励的方法是让一个预定的作业轮询表并从那里调用.exe文件,而不会产生任何性能问题。到目前为止,我已接受并正在努力。

所以,在尝试这个之前,我正在研究在实现之前必须学习的每个部分。我正在测试上面的代码片段,保持数据库为主。 我已经尝试了几个。

EXEC master..xp_cmdshell '"C:\New Folder\r.rar"'

EXEC master..xp_cmdshell '"C:\New Folder\text.text"'

所以,我认为这个xp_cmdshell是一个正常的命令提示符。我期待看到exe文件打开和打开tet文件和rar文件。但它不起作用。

我已经将上述详细信息告诉了我的方法,如果您在早期的经历中有更好的方法,请给我一个反馈。提前谢谢。

2 个答案:

答案 0 :(得分:2)

尝试触发

以下是从触发器运行.exe文件的代码:

CREATE TRIGGER trgAfterInsert on dbo.table_Demo
DECLARE @CMDSQL VARCHAR(1000)

设置exe文件的路径,如果需要,可以包含参数文件。

SET @CMDSQL = 'cmd.exe /C "D:\Phoenix restart\612 League\code\PhoenixMallTest\bin\Release\PhoenixMallTest.Console.exe" App.ini'
Exec master..xp_cmdshell @CMDSQL
PRINT 'AFTER INSERT trigger fired.'

如果sql server阻止xp_cmdshell或说启用xp_cmdshell,则可以执行以下操作。

Use Master
GO

EXEC master.dbo.sp_configure 'show advanced options', 1
RECONFIGURE WITH OVERRIDE
GO

EXEC master.dbo.sp_configure 'xp_cmdshell', 1
RECONFIGURE WITH OVERRIDE
GO

答案 1 :(得分:1)

您遇到了什么类型的错误?

您可以解决此问题,因为组件已关闭,作为SQL Server安全配置的一部分。

系统管理员可以使用sp_configure启用“xp_cmdshell”。有关启用“xp_cmdshell”的详细信息,请参阅SQL Server联机丛书中的“表面区域配置”。