C# 从SQL Server运行可执行文件

C# 从SQL Server运行可执行文件,c#,sql-server,sql-server-2008,C#,Sql Server,Sql Server 2008,我一直在研究如何运行外部exe文件。到目前为止,我发现可以使用 这: 而且这不能直接在触发器中调用,因为它必须等到执行完成后才能完成触发器 因此,鼓励采用的方法是使用计划作业轮询表,并从表调用.exe文件,而不会产生任何性能问题。到目前为止,我已经接受了它并正在努力 因此,在尝试这一点之前,我正在研究在实现之前必须学习的每一部分。我正在测试上述代码,将数据库作为主数据库。 我又试了几次 EXEC master..xp_cmdshell '"C:\New Folder\r.rar"' EXEC

我一直在研究如何运行外部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文件时可以看到。但它不起作用


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

您会遇到什么类型的错误

您可能会遇到此问题,因为组件已作为sql server安全配置的一部分关闭


系统管理员可以通过使用sp\u configure启用“xp\u cmdshell”。有关启用“xp_cmdshell”的详细信息,请参阅SQL Server联机丛书中的“表面积配置”

您会遇到什么类型的错误

您可能会遇到此问题,因为组件已作为sql server安全配置的一部分关闭

系统管理员可以通过使用sp\u configure启用“xp\u cmdshell”。有关启用“xp_cmdshell”的详细信息,请参阅SQL Server联机丛书中的“表面积配置”

试试触发器

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

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

如果sql server阻止xp\u cmdshell或说要启用xp\u cmdshell,则可以执行以下操作

试扳机

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

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

如果sql server阻止xp\u cmdshell或说要启用xp\u cmdshell,则可以执行以下操作


你所说的可见是什么意思?您位于SQL Server框上,希望在SQL Server调用rar时看到它打开?不,这不是它的工作原理。该进程在后台运行,这就是为什么以这种方式从SQL Server调用的程序不能依赖UI组件、提示、用户输入等。使用xp_cmdshell是不安全的,因为它允许您执行所有操作系统级别的操作,如运行外部可执行文件。建议不要使用xp_cmdshell。您可以从这里获得解决方案-FoA我很抱歉,我无法在我遇到的这个问题上了解你们,好的,现在我明白了,所以我们无法查看UI组件,因为exe是在服务器上执行的。我想它就像,因为它在我的计算机上工作,exe在我的计算机上打开,可以查看正在发生的事情。非常感谢乌特卡什:你说的“可见”是什么意思?您位于SQL Server框上,希望在SQL Server调用rar时看到它打开?不,这不是它的工作原理。该进程在后台运行,这就是为什么以这种方式从SQL Server调用的程序不能依赖UI组件、提示、用户输入等。使用xp_cmdshell是不安全的,因为它允许您执行所有操作系统级别的操作,如运行外部可执行文件。建议不要使用xp_cmdshell。您可以从这里获得解决方案-FoA我很抱歉,我无法在我遇到的这个问题上了解你们,好的,现在我明白了,所以我们无法查看UI组件,因为exe是在服务器上执行的。我想它就像,因为它在我的计算机上工作,exe在我的计算机上打开,可以查看正在发生的事情。非常感谢Utkarsh:
EXEC master..xp_cmdshell '"C:\New Folder\r.rar"'

EXEC master..xp_cmdshell '"C:\New Folder\text.text"'
CREATE TRIGGER trgAfterInsert on dbo.table_Demo
DECLARE @CMDSQL VARCHAR(1000)
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.'
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