SQL server觸發器、預存程序操作遠端資料庫插入資料,解決伺服器已存在的問題,server觸發器
最近弄了一個小項目,也不是很複雜,需要將一個資料庫的一些資料備份到另外一個庫,不是本地,可能是網路上其他的資料庫,想了一下,用了預存程序和觸發器。也不是很複雜,首先我需要操作遠端資料庫,於是寫了一個預存程序:
CREATE PROCEDURE sendInfoToRemoteDb @CardNo varchar(50),@CardStyle varchar(20),@userId varchar(20),@UserName varchar(30),@passDate datetime,@inOut intASBEGIN--exec sp_addlinkedserver<span style="white-space:pre"></span>--@server='ims_srv_lnk',<span style="white-space:pre"></span>--@srvproduct='',<span style="white-space:pre"></span>--@provider='MSDASQL',<span style="white-space:pre"></span>--@provstr='Driver={SQL SERVER};SERVER=xxxx.com;UID=xxx;PWD=xxx;Database=xxx'insert into ims_srv_lnk.IMSDBBAK.dbo.tb_record(cardNo,cardStyle,userId,userName,passDate,inOut) values(@CardNo,@CardStyle,@userId,@UserName,@passDate,@inOut)ENDGO
其實就是操作遠端資料庫。插入一下資料,然後這邊本機資料庫寫了一個觸發器:
create trigger tgr_passrecord_insert on PassCheckRecord for insert --插入觸發 as --定義變數 declare @CardNo varchar(50),@CardStyle varchar(20),@userId varchar(20),@UserName varchar(30),@passDate datetime,@inOut int --在inserted表中查詢已經插入記錄資訊 select @CardNo = CardNo, @CardStyle = CardStyle,@userId=userId ,@UserName=UserName,@passDate=passDate, @inOut=inOutfrom inserted;set @CardNo = @CardNo; set @CardStyle = @CardStyle;set @userId = @userId;set @UserName = @UserName;set @passDate = @passDate; set @inOut = @inOut; exec [dbo].[sendInfoToRemoteDb] @CardNo = @CardNo, @CardStyle = @CardStyle, @userId = @userId, @UserName = @UserName, @passDate = @passDate, @inOut = @inOutprint '發送資訊成功!';
然後這樣的結果第一次執行成功了,但是第二次卻提示 ims_srv_lnk已存在,不能執行了。後面想來想就把代碼裡面的串連伺服器那一塊刪除了,結果就OK了。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。