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

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

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

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://xjtudll.cn/Exp/615/

标签: SQL
分享给朋友:

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

Proteus7.6SP4汉化补丁

不得不说国内牛人还是相当多的。尤其是sexywp大牛,看他Proteus破解的相当好。下面这个Proteus 7.6 SP4汉化补丁就是由他修改的。下载地址:http://ishare.iask.sina.com.cn/f/6733828.html介绍:用7.5的汉化修改而来,先和谐,再用汉化补丁覆...

K3老单插件控制字段显示

K3老单插件控制字段显示

https://www.cnblogs.com/youzhangcai1/p/10685778.html 【问题描述:】 我想在工业单据的插件中锁定单据头字段,但实现不了? 【解决方法:】 For i = 0 To m_BillTransfer.Head.count - 1 &n...

CC254x android6.x无法配对

参考资料: https://e2e.ti.com/support/wireless_connectivity/bluetooth_low_energy/f/538/t/457958 问题: 配对时提示密码或PIN错误,但是根本就没有到输入密码这一步,就直接说密码错误了。 环境: android 6....

BIN转BCD

BCD代码,Binary-Coded Decimal‎,是一种二进制的数字编码形式,用二进制编码的十进制代码。这种编码形式利用了四个位元来储存一个十进制数,使二进制和十进制之间的转换得以快捷的进行。常见BCD编码有8421 BCD码,2421 BCD码,余3码。我们要说的就是8421 BCD码与二进...

Xcode5如何添加或更换图标

Xcode5如何添加或更换图标

参考文献: 官方教程:https://developer.apple.com/library/ios/qa/qa1686/_index.html 1、添加图标图片资源到工程 2、选择对应的App Icons。如果从来没有添加过,【Resource】处可以自己选择想要的图标资源。选择好后编译即可。编...

谈谈BLE连接参数

在使用BLE过程中,BLE连接参数是一个比较容易忽略的地方,很多人从来不管这些连接参数,结果很容易出现以下几个问题: 1、设备功耗大; 2、与android系统手机或ios系统手机无法连接(尤其是ios系统); 3、连接后,串口使用较低波特率发送数据时,容易出现乱码; 这些问题...

发表评论

访客

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