sqlserver資料庫觸發器呼叫外部exe

2022-03-04 22:42:42 字數 2119 閱讀 7898

sqlserver資料庫觸發器呼叫外部exe,同事可以選擇參入引數!

sqlserver使用 master..xp_cmdshell 進行外部exe的執行。

使用master..xp_cmdshell 之前需要在據庫中啟用xp_cmdshell ,啟用和關閉方式如下:

--開啟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;

外部程式物理路徑:「d:\debug\test.exe」

其中,exe程式最好是控制台應用程式,自己執行完成後自己可以進行關閉的程式,否則資料庫中會一直進行迴圈。

第一種,簡單的執行外部exe程式:

資料庫某個**中寫觸發器:

1

use [dt_teststep]2go

34set ansi_nulls on5go

67set quoted_identifier on8go

910create trigger [dbo].[tritest]

11on [dbo].[tb_test]

12 for update --更改資料觸發(insert、delete)

13as

14begin

15 exec master..xp_cmdshell '

d:\debug\test.exe'16

17set nocount on;

1819

20end

21 go

當**tb_test中資料更新修改時就會觸發外部的exe程式。

第二種,外部程式需要傳入引數

這裡用控制台應用程式,

static

void main(string args){}

其中args為exe程式接收的傳入的引數。

資料庫中的觸發器寫法如下:

use [dt_teststep]

goset ansi_nulls on

goset quoted_identifier on

gocreate trigger [dbo].[tritest]

on [dbo].[tb_test]

for update

asbegin

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

endgo

與第一種不同的是,帶有引數,外部程式呼叫時改為先啟動cmd,然後在進行exe的執行。

其中,引數1作為測試,宣告變數,引數2 為直接寫入的引數。

在exe程式中接收的引數就是string args=;

程式中對引數進行操作即可。

資料庫應用 Sqlserver觸發器

下面講在sql sever2000 sybase資料為里設定觸發器的指令碼例項 sql sever2000和sybase的儲存語句是相同的 題目要求 表1和表2的主鍵都是xjh 學籍號 當表1新增,刪除,或者修改資料時,表2自動更新,請用觸發器實現它們?答案 建議在資料庫管理中心直接執行ddl的sq...

Sql Server資料庫觸發器例項講解

定義 何為觸發器?在sql server裡面也就是對某乙個表的一定的操作,觸發某種條件,從而執行的一段程式。觸發器是乙個特殊的儲存過程。常見的觸發器有三種 分別應用於insert update delete 事件。sql server 2000定義了新的觸發器,這裡不提 我為什麼要使用觸發器?比如,...

Sql Server資料庫觸發器例項講解

別處轉的 定義 何為觸發器?在sql server裡面也就是對某乙個表的一定的操作,觸發某種條件,從而執行的一段程式。觸發器是乙個特殊的儲存過程。常見的觸發器有三種 分別應用於insert update delete 事件。sql server 2000定義了新的觸發器,這裡不提 我為什麼要使用觸發...