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

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

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

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” 的相关文章

QQ域名邮箱MX设置

前段时间,QQ有了个域名邮箱,于是我立马开通了,设置过程很简单,首先在QQ邮箱界面激活域名邮箱功能,然后进入设置界面验证域名。通过验证后,进入域名控制面板设置MX。腾讯提示2-24小时就可以生效了,但我一直等到超过24小时还是未生效。于是只好搜索网络。腾讯帮助里面是这话说的:为什么我的MX记录设置验...

如何去除桌面快捷方式阴影

如何去除桌面快捷方式阴影

昨天,在用Fireworks编辑图片的时候,拷贝图片粘贴到桌面,结果提示安装active desktop ,当时没注意就安装上了,结果桌面快捷方式下面都出现了阴影。看起来很不爽。第一次碰到这情况,问题虽简单却也颇费周折。后来从网上搜索了一下,找到了解决办法。第一步,右键单击桌面空白处,左键单击&ld...

最流行网络英文潮语集合

btw(by the way):这个大多数人都会用,就是“顺便再说一句”的意思。g2g(got to go):要走了。原句是I've got to go。ttyl(talk to you later):下次再说。brb(be right back):很快回来。也就是I'll...

iPad2插电循环重启,无法充电

老爷机iPad2最近发疯了: 1、不插充电器 无法开机; 2、插上普通充电器,木有反应; 3、插上专用的5V,2.1A充电器,有时可开机,但一会儿就关机了。然后又自动开机。循环往复。 经过分析,初步确定是电池有问题(机子本身无进水无维修) 可以参考下面的讨论: https://discussions...

CC2541功耗测试结果

CC2541功耗测试结果

测试环境: 1、CC2541开发板 2、使用heartrate工程,修改心率发送间隔时间为1秒(原来是2秒) 测试结果: 慢速广播 10 uA 快速广播 2 mA 仅定时器运行:1.2 uA(蓝牙关闭) 休眠:0.34 uA 与手机连接时刻:1 mA 约持续10秒 保持连接状态(1秒发送一次心率值...

金蝶K3系统单据对应ICTemplate表单ID信息

SELECT FID,FCaption FROM ICTemplate where FFieldName = 'FBillCaption' FID    FCaption A01    外购入库单 A02  &n...

发表评论

访客

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