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

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

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

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

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

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

第一种,简单的执行外部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 --更改数据触发(insert、delete)
AS
BEGIN
EXEC master..xp_cmdshell 'D:\Debug\TEST.exe' SET NOCOUNT ON; END
GO

当表格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() ,@Result varchar()
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"};

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

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

  1. Mysql数据库触发器调用脚本

    一.数据库触发器 mysql触发器trigger 实例详解 对数据库触发器new和old的理解 示例 二.UDF mySql的UDF是什么 三.安装执行命令UDF mysql触发器调用外部脚本(安装) ...

  2. windows下调用外部exe程序 SHELLEXECUTEINFO

    本文主要介绍两种在windows下调用外部exe程序的方法: 1.使用SHELLEXECUTEINFO 和 ShellExecuteEx SHELLEXECUTEINFO 结构体的定义如下: type ...

  3. c# 调用外部exe程序

    c#调用外部exe程序,首先要 using System.Diagnostics; 然后开启一个新process System.Diagnostics.ProcessStartInfo p=null; ...

  4. C# ASP.NET Webservice调用外部exe无效的解决方法

    最近用asp.net做webservice,其中有个功能是调用执行外部的exe(类似cmd中执行),但执行Process.Start之后就没有结果,同样代码在winform下正常,折腾两天终于找到解决 ...

  5. C++或C#调用外部exe的分析

    假如有个外部程序名为A.exe,放在目录E:\temp\下,然后我们用C++或者C#写一个程序调用这个A.exe的话(假设这个调用者所在的路径在D:\invoke),通常会采用下面的代码: // C# ...

  6. as3调用外部应用程序 as调用外部exe文件as3调用bat文件 未测试

    private function callTest(event: Event): void{callExe("d:/a.exe");callBat("d:/a.bat&q ...

  7. [转]VC中调用外部exe程序方式

    本文转自:http://blog.sina.com.cn/s/blog_486285690100ljwu.html 目前知道三种方式:WinExec,ShellExecute ,CreateProce ...

  8. sqlserver数据库触发器和存储过程案例学习

      --创建表 create table zhuangzhan ( name ), code ) ); --往表添加一列 alter table zhuangzhan add descition in ...

  9. JAVA 和 C# 调用外部.exe文件,传值并等等exe完成,获取返回值

    JAVA- String ykexe = getProperty("ykexe") + " " + tableout; //getproperty(" ...

随机推荐

  1. AES,DES加密JS源文件及其使用方法

    源文件地址:https://github.com/dididi1234/crypto 进入之后直接下载CryptoJS.js,js中直接引用,小程序也一样可以使用 具体使用方法和vue中的Crypto ...

  2. 原有vue项目接入typescript

    原有vue项目接入typescript 为什么要接入typescript javascript由于自身的弱类型,使用起来非常灵活. 这也就为大型项目.多人协作开发埋下了很多隐患.如果是自己的私有业务倒 ...

  3. MT2017笔试题

    一.大富翁游戏 1.题目 大富翁游戏,玩家根据骰子的点数决定走的步数,即骰子点数为1时可以走一步,点数为2时可以走两步,点数为n时可以走n步.求玩家走到第n步(n<=骰子最大点数且是方法的唯一入 ...

  4. https和http共存的nginx简单配置

    server{ listen 80; listen 443 ssl; ssl_certificate /usr/local/nginx/ssl/www.demo.com/www.demo.com.cn ...

  5. IdentityServer Topics(7)- 注销

    注销IdentityServer与删除身份cookie一样简单,但是我们必须考虑将用户从客户端应用程序(甚至可能是上游身份提供程序)中注销. 一.删除身份认证Cookie 要删除身证认证cookie, ...

  6. Ajax上传图片以及上传之前先预览

    手头上有几个小项目用到了easyUI,一开始决定使用easyUI就注定了项目整体上前后端分离,基本上所有的请求都采用Ajax来完成.在文件上传的时候用到了Ajax上传文件,以及图片在上传之前的预览效果 ...

  7. InterlliJ Debug方式启动:method breakpoints may dramatically show down debugging

    使用idea在DEBUG的时候出现Method breakpoints may dramatically slow down debugging, 如图: 根据语义可能是断点打在方法上面了,导致在某个 ...

  8. java~@Async异步功能

    @Async注解,可以实现异步处理的功能,它可以有返回值,或者直接在新线程时并行执行一个任务,对于异步来说,它的执行是有条件的,你需要把异步代码块放在单独的类里,当spring在注入时,才不会相互影响 ...

  9. SpringCloud Feign的分析

    Feign是一个声明式的Web Service客户端,它使得编写Web Serivce客户端变得更加简单.我们只需要使用Feign来创建一个接口并用注解来配置它既可完成. @FeignClient(v ...

  10. 阿里云ACE共创空间——MQ消息队列产品测试

    一.产品背景消息队列是阿里巴巴集团自主研发的专业消息中间件. 产品基于高可用分布式集群技术,提供消息订阅和发布.消息轨迹查询.定时(延时)消息.资源统计.监控报警等一系列消息云服务,是企业级互联网架构 ...