从SQL Server运行可执行文件

从SQL Server运行可执行文件

问题描述:

我一直在关于运行一个外部exe文件的研究。我迄今发现这是它可以使用 该这样做:从SQL Server运行可执行文件

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文件。但它不工作。

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

+1

你是什么意思的“可见”?您位于SQL Server框中,希望在被SQL Server调用时看到rar打开?不,这不是它的工作原理。该进程在后台运行,这就是为什么你从SQL Server以这种方式调用的程序不能依赖于UI组件,提示,用户输入等。 – 2012-07-13 12:22:51

+0

FoA我很抱歉,我无法关注你probelm,我有,好吧,现在我明白了,所以我们无法查看UI组件,因为exe在服务器上执行。我认为它就像,因为它在我的电脑上工作,EXE在我的机器上打开,可以看到发生了什么。 – 2012-07-16 03:27:36

使用“xp_cmdshell”不安全,因为它允许您执行所有操作系统级别的操作,如运行外部可执行文件。建议不要使用“xp_cmdshell”。

你可以从这里 -

http://www.mssqltips.com/sqlservertip/2014/replace-xpcmdshell-command-line-use-with-sql-server-agent/

+0

非常感谢Utkarsh :) – 2012-07-23 07:46:26

你得到什么类型的错误的解决方案?

你可以得到这个问题,因为组件被关闭作为你的SQL服务器的安全配置的一部分。

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

+0

这个问题已经解决了。 – 2013-01-31 07:53:33

尝试触发

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

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.' 

如果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