1. 程式人生 > >SQL server觸發器、儲存過程操作遠端資料庫插入資料,解決伺服器已存在的問題

SQL server觸發器、儲存過程操作遠端資料庫插入資料,解決伺服器已存在的問題

最近弄了一個小專案,也不是很複雜,需要將一個數據庫的一些資料備份到另外一個庫,不是本地,可能是網路上其他的資料庫,想了一下,用了儲存過程和觸發器。也不是很複雜,首先我需要操作遠端資料庫,於是寫了一個儲存過程:

CREATE PROCEDURE sendInfoToRemoteDb 
	@CardNo varchar(50),
	@CardStyle varchar(20),	
	@userId varchar(20),
	@UserName varchar(30),
	@passDate datetime,
	@inOut int
AS
BEGIN
	--exec sp_addlinkedserver
<span style="white-space:pre">	</span>
[email protected]
='ims_srv_lnk', <span style="white-space:pre"> </span>[email protected]='', <span style="white-space:pre"> </span>[email protected]='MSDASQL', <span style="white-space:pre"> </span>[email protected]='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) END GO
其實就是操作遠端的資料庫。插入一下資料,然後這邊本地資料庫寫了一個觸發器:
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=inOut
from 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 = @inOut
print '傳送資訊成功!';

然後這樣的結果第一次執行成功了,但是第二次卻提示 ims_srv_lnk已存在,不能執行了。後面想來想就把程式碼裡面的連線伺服器那一塊刪除了,結果就OK了。

來源:http://bluesnowsoft.com

相關推薦

SQL server觸發器儲存過程操作遠端資料庫插入資料,解決伺服器存在的問題

最近弄了一個小專案,也不是很複雜,需要將一個數據庫的一些資料備份到另外一個庫,不是本地,可能是網路上其他的資料庫,想了一下,用了儲存過程和觸發器。也不是很複雜,首先我需要操作遠端資料庫,於是寫了一個儲存過程: CREATE PROCEDURE sendInfoToRemo

SQL server觸發器過程操作遠程數據庫插入數據,解決服務器存在的問題

定義 ims val rom 記錄 插入記錄 其它 pre 項目 近期弄了一個小項目,也不是非常復雜,須要將一個數據庫的一些數據備份到另外一個庫。不是本地,可能是網絡上其它的數據庫。想了一下,用了存儲過程和觸發器。也不是非常復雜,首先我須要操作遠程數據庫,於是寫了一個存

sql server 查看錶檢視觸發器儲存過程等組成sql查詢語句

1. 檢視使用者表 select name from sys.tables select name from sys.objects where type='U' select name from sysobjects where xtype='U'   其中type

sql server事務 鎖 儲存過程 索引 觸發器

1.事務:保證一個多操作的事情全部完成,否則回到做之前的狀態 begin try begin tran–設定反悔點,開啟事務 delete from UserInfo where UserId>5 delete from ClassInfo commit tran–不反悔,提交事務 e

SQL知識整理一:觸發器儲存過程變量表臨時表

<pre name="code" class="javascript">$('#dd2').draggable({ proxy:'clone' }); 一、觸發器 create trigger tr_name on table/view {for

MySQL觸發器儲存過程自定義函式檢視 常用SQL

1.建立一個userinfo表新增記錄時的觸發器 將新增日誌加入到userinfolog 2.建立一個向userinfo表新增記錄的儲存過程 3.根據userinfo表的出生日期欄位 我們將建立一個簡單算得年齡的自定義函式 4.建立一個userinfo的檢視 呼叫年齡函式

SQL server 2012 中儲存過程除錯

1、儲存過程無法直接除錯 選中要除錯的儲存過程,右擊“執行儲存過程”,根據是否需要輸入引數,若需要則可以先隨便輸入,跳轉到Exec 頁面後,輸入正確合理的引數進行,F10,開始除錯,F11,進入到被呼叫的儲存過程中。 結論:無法很好的與C#客戶端程式聯合起

Sql Server 2008中儲存過程傳入表值引數

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Sql server動態載入儲存過程--分頁

create procedure [dbo].[pro_getStu] ( @pindex int,  --最小是1,第1頁 @psize int, @name nvarchar, @dbcount int&n

MySQL:檢視觸發器儲存過程事務

檢視: 檢視,虛擬表 建立虛擬表: # 語法: # create view 虛擬表名稱 as 虛擬表; create view course_and_teacher as select * from course inner join teacher on course.teacher_id =

mysql 初級篇(三) 觸發器儲存過程遊標

mysql 初級篇(三) 觸發器、儲存過程、遊標   觸發器triggerCreat trigger buggoodAfterInsertOn ordFor each rowBeginUpdate goods set num=num-new.much where id=new.gidEnd

Sql Server與Oracle儲存過程轉換

在sql 向oracle 遷移過程中,最頭疼的也許就是儲存過程的轉換了,之前利用sql/developer 將sql 資料遷移到oracle 裡面去了,但是對於儲存過程來說,還需要進行大量的後續更改,

SQL SERVER常用系統儲存過程

--獲得MS SQL的版本號 execute master..sp_msgetversion --得到硬碟檔案資訊 --引數說明:目錄名,目錄深度,是否顯示檔案 execute master..xp_dirtree 'c:' execute master..xp_dirtr

sql server之在儲存過程中利用OpenJson將Json字串轉化為表格

在Sql server2016的版本後,資料庫增加了對Json格式的支援,詳細資訊可以參考微軟官方文件連結 應用背景 線上訂餐系統中,購物車的內容儲存在瀏覽器快取中,所以資料庫關於訂單的設計是訂單表(訂單ID,送貨地址,使用者ID,,,,,),訂單明細表(訂

C#呼叫SQL Server分頁儲存過程

以SQL Server2012提供的offset ..rows fetch next ..rows only為例e.g.表名:Tab1 ---------------------------------- ID Name 1 tblAttributeGroupDetail 2

SQL Server基礎之儲存過程

if (object_id('book_page', 'P') is not null) drop proc book_page go create proc book_page( @TableName varchar(50), --表名 @ReFi

SQL Server 禁用擴充套件儲存過程

概述   擴充套件儲存過程是 SQL Server 例項可以動態載入和執行的 DLL。擴充套件儲存過程是使用 SQL Server 擴充套件儲存過程 API 編寫的,可直接在 SQL Server 例項的地址空間中執行。擴充套件儲存過程可能會產生記憶體洩漏或其他降低伺服器的效能及可靠性的問題。固定伺服器

在Oracle資料庫中查詢所有觸發器儲存過程檢視

在Oracle資料庫中查詢所有觸發器、儲存過程、檢視、表 方法一: Select object_name From user_objects Where object_type='TRIGGER';  --所有觸發器 Select object_name From user_objects Where ob

如何查詢資料庫中的所有觸發器儲存過程檢視

select name from sysobjects where xtype='TR' --所有觸發器select name from sysobjects where xtype='P' --所有儲存過程select name from sysobjects where

C#呼叫Sql Server 2008的儲存過程流程

前言 最近用到了sql server 2008的儲存過程,特此整理成文 流程步驟 1.獲取連結 SqlConnection myConnection = new SqlConnec