1

我一直在研究运行外部 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 文件的打开。但它不起作用。

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

4

2 回答 2

4

尝试触发

以下是从触发器运行 .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
于 2016-11-18T10:13:09.000 回答
1

你得到什么类型的错误?

您可能会遇到此问题,因为组件在您的 sql 服务器的安全配置中被关闭。

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

于 2013-01-31T05:35:25.657 回答