c# - 从 SQL Server 运行可执行文件

标签 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 文件的打开。但它不起作用。

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

最佳答案

试试触发器

以下是从触发器运行 .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/

相关文章:

c# - SQL Server 截断表 - 删除并重新创建 FK 约束脚本

sql - 不明确的表更新查询

sql - 转置键值对 SQL 表

c# - 对负整数返回零

c# - ThreadState 属性的值是多少?

c# - asp.net C#上传大文件并处理

SQL 获取与另一个表中的值描述相关联的最后日期和值

c# - 如何在 Signalr Azure 服务中启用 Cors

sql - 同步表 - UPDATE INSERT DELETE 的顺序重要吗?

sql-server - SQL 中的逗号分隔结果