当前位置:首页 > 技术心得 > 正文内容

sqlserver数据库触发器调用外部exe

xjtudll5年前 (2021-08-31)技术心得5130

https://www.cnblogs.com/syp1Blog/p/9482088.html

sqlserver数据库触发器调用外部exe,同事可以选择参入参数!

sqlserver使用 master..xp_cmdshell 进行外部exe的执行。

使用master..xp_cmdshell 之前需要在据库中启用xp_cmdshell ,启用和关闭方式如下:

copycode

--开启xp_cmdshell: exec sp_configure 'show advanced options', 1;  reconfigure;  exec sp_configure 'xp_cmdshell', 1;  reconfigure;  exec sp_configure 'show advanced options', 0;  reconfigure;  --关闭xp_cmdshell: exec sp_configure 'show advanced options', 1;  reconfigure;  exec sp_configure 'xp_cmdshell', 0;  reconfigure;  exec sp_configure 'show advanced options', 0;  reconfigure;

copycode[1]

外部程序物理路径:“D:\Debug\TEST.exe”

其中,exe程序最好是控制台应用程序,自己执行完成后自己可以进行关闭的程序,否则数据库中会一直进行循环。

第一种,简单的执行外部exe程序:

数据库某个表格中写触发器:

copycode[2]

 1 USE [dt_teststep]  2 GO  3   4 SET ANSI_NULLS ON  5 GO  6   7 SET QUOTED_IDENTIFIER ON  8 GO  9  10 CREATE TRIGGER [dbo].[tritest] 11 ON [dbo].[tb_test] 12 FOR UPDATE --更改数据触发(insert、delete) 13 AS 14 BEGIN 15     EXEC master..xp_cmdshell 'D:\Debug\TEST.exe' 16      17     SET NOCOUNT ON; 18  19  20 END 21 GO

copycode[3]

当表格tb_test中数据更新修改时就会触发外部的exe程序。

第二种,外部程序需要传入参数

这里用控制台应用程序,

static void Main(string[] args){}

其中args为exe程序接收的传入的参数。

数据库中的触发器写法如下:

USE [dt_teststep] GO  SET ANSI_NULLS ON GO  SET QUOTED_IDENTIFIER ON GO  CREATE TRIGGER [dbo].[tritest] ON [dbo].[tb_test] FOR UPDATE AS BEGIN          declare @Type varchar(50) ,@Result varchar(100)     set @Type='参数1'     set @Result = 'cmd.exe /c D:\Debug\TEST.exe '+@Type+' "参数2"'     EXEC master..xp_cmdshell @Result          SET NOCOUNT ON;      -- Insert statements for trigger here  END GO

与第一种不同的是,带有参数,外部程序调用时改为先启动cmd,然后在进行exe的执行。

其中,参数1作为测试,声明变量,参数2 为直接写入的参数。

在exe程序中接收的参数就是string[] args={"参数1","参数2"};

程序中对参数进行操作即可。

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://www.xjtudll.cn/Exp/615/

标签: SQL
分享给朋友:

“sqlserver数据库触发器调用外部exe” 的相关文章

Word表格显示/隐藏虚框

Word表格显示/隐藏虚框

Word里,可以将表格的某些行(列)的边框线设置为“无”,但是在编辑界面,还是可以看到边框线的,只是颜色显示为灰色。如果想让那些设置为“无”了的边框线确实不显示,点击“隐藏虚框”就可以了。 这个操作说起来简单,但是得找到在菜单在...

金蝶物料属性为自制,MRP计算需要产生委外类型的计划订单?

解决方案如下: 物料资料中设置该物料的默认生产类型为委外加工即可。具体操作步骤如下: 1、登录KIS旗舰版主控台,依次单击【系统设置】→【基础资料】→【公共资料】,双击【物料】; 2、进入物料资料界面,选择需要设置的物料点击【修改】,在弹出的【物料-修改】窗口中,选择【计划资料】...

Eclipse安装android 开发插件(ADT)

Eclipse安装android 开发插件(ADT)

如果是单独的eclipse,需要下载ADT。 (1)打开Eclipse, 在菜单栏上选择 help->Install New SoftWare 出现如下界面: 点击 Add按钮,出现如下界面 输入网址: https://dl-ssl.google.com/android/eclipse/...

【源单单号】【源单类型】字段,在序时簿表头过滤条件里选不到

问题描述:自定义BOS单据,发布到主控台后,增加的【源单单号】【源单类型】,在过滤条件里选择不到这个字段解决方案:【重要提示】:请先在备份账套,根据相关单据修改下面SQL语句后,执行生效后,再在正式账套执行。--根据单据名称,在ICClassType表里查出需要在过滤界面显示源单类型和源单编号字段的...

PowerPCB5.01安装

PowerPCB5.01安装

软件下载地址:http://www.mcu123.com/news/Soft/embsof/pcb/200609/104.html我目前就是用的这个,暂时没发现什么问题。1、安装时选择“Node-locked with FLEXid Key(teal)”  ...

Android的Service中弹出窗口解决方法

参考资料: http://www.cnblogs.com/fbsk/archive/2011/12/28/2304523.html http://blog.csdn.net/djun100/article/details/23756681 问题: 我们在使用Service时,经常会碰到这样的情况,比...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。