我一直在研究如何运行外部 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 文件的打开。但它不起作用。
我已经给出了以上详细信息来告诉我我的方法,如果您在早期的经验中有更好的方法,请反馈给我。提前致谢。
最佳答案
试试触发器
以下是从触发器运行 .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
关于c# - 从 SQL Server 运行可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11469457/