从 SQL Server 运行可执行文件

diy*_*da_ 1 c# sql-server sql-server-2008

我一直在研究运行外部 exe 文件。到目前为止我发现可以使用以下方法来完成:

EXEC master..xp_cmdshell '"C:\New Folder\test.exe"'
Run Code Online (Sandbox Code Playgroud)

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

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

因此,在尝试此操作之前,我正在研究实施之前必须学习的每个部分。我正在测试上述代码,将数据库保持为主数据库。我又尝试了几次。

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

EXEC master..xp_cmdshell '"C:\New Folder\text.text"'
Run Code Online (Sandbox Code Playgroud)

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

我已经给出了上面的详细信息来告诉我我的方法,如果您在之前的经验中有更好的方法,请给我反馈。提前致谢。

Anu*_*and 5

尝试触发

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

CREATE TRIGGER trgAfterInsert on dbo.table_Demo
DECLARE @CMDSQL VARCHAR(1000)
Run Code Online (Sandbox Code Playgroud)

设置 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.'
Run Code Online (Sandbox Code Playgroud)

如果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
Run Code Online (Sandbox Code Playgroud)