SQL Server數(shù)據(jù)庫遠(yuǎn)程更新目標(biāo)表數(shù)據(jù)的存儲過程
文章主要介紹了SQL Server 遠(yuǎn)程更新目標(biāo)表數(shù)據(jù)的存儲過程,適用于更新列名一致,主鍵為Int類型,具體實例代碼大家參考下本文本文給大家分享一個遠(yuǎn)程更新目標(biāo)庫數(shù)據(jù)的存儲過程,適用...
本文給大家分享一個遠(yuǎn)程更新目標(biāo)庫數(shù)據(jù)的存儲過程,適用于更新列名一致,主鍵為Int類型,可遠(yuǎn)程鏈接的數(shù)據(jù)庫。
- USE [- Table- ]- --切換到源表,就是數(shù)據(jù)最新的那個表
- GO
- /****** Object: StoredProcedure [dbo].[proc_DataUpdate] Script- Date- : 2018/5/4 15:08:56 ******/
- SET- ANSI_NULLS- ON
- GO
- SET- QUOTED_IDENTIFIER- ON
- GO
- -- =============================================
- -- Author: <Grom>
- -- Create date: <2018-05-04>
- -- Description: <分批更新遠(yuǎn)程數(shù)據(jù),僅支持主鍵為int表>
- -- =============================================
- CREATE- PROCEDURE- [dbo].[proc_DataUpdate]
- @TargetInstance nvarchar(- max- ),
- @TargetDBName nvarchar(- max- ),
- @TargetUID nvarchar(- max- ),
- @TargetPWD nvarchar(- max- ),
- @LocalDBName nvarchar(- max- ),
- @PK_ID nvarchar(- max- ),- --主鍵列(必須為數(shù)字)
- @- Column- nvarchar(- max- ),- --更新列名集合
- @ExecSize- int- --每次執(zhí)行數(shù)量
- AS
- declare- @sql nvarchar(- max- ),
- @NumMax- int- =0,
- @NumMin- int- =0,
- @MaxID- int
- BEGIN
- -- SET NOCOUNT ON added to prevent extra result sets from
- -- interfering with SELECT statements.
- -- SET NOCOUNT ON;--打開注釋可不顯示執(zhí)行過程,提高速度
- begin- try
- --取最大值
- set- @sql =- 'select @MaxID=MAX('- +@PK_ID+- ') from '- +@LocalDBName;
- exec- sp_executesql @sql,N- '@MaxID int out'- ,@MaxID- out
- --循環(huán)
- while(@NumMax<@MaxID)
- begin
- if exists (- select- *- from- tempdb.dbo.sysobjects- where- id = object_id(N- 'tempdb..##tmp_table'- )- and- type=- 'U'- )
- drop- table- ##tmp_table;
- SET- @sql =- 'select top '- +- cast- (@ExecSize- as- nvarchar(1000))+- ' '- + @- Column- +- ' into ##tmp_table from '- +@LocalDBName+- ' where '- +@PK_ID+- '>'- +- cast- (@NumMax- as- nvarchar(150));
- exec- sp_executesql @sql;
- --記錄執(zhí)行最大值
- SET- @SQL=- 'select @NumMax=MAX('- +@PK_ID+- ') from ##tmp_table'- ;
- exec- sp_executesql @sql,N- '@NumMax int out'- ,@NumMax- out- ;
- --記錄執(zhí)行最小值
- SET- @SQL=- 'select @NumMin=MIN('- +@PK_ID+- ') from ##tmp_table'- ;
- exec- sp_executesql @sql,N- '@NumMin int out'- ,@NumMin- out- ;
- SET- @sql=- 'delete openrowset('- 'SQLOLEDB'- ','- ''- +@TargetInstance+- ''- ';'- ''- +@TargetUID+- ''- ';'- ''- +@TargetPWD+- ''- ',['- +@TargetDBName+- '].[dbo].['- +@LocalDBName+- '])
- where '- +@PK_ID+- ' between '- +- cast- (@NumMin- as- nvarchar(200))+- ' and '- +- cast- (@NumMax- as- nvarchar(200));
- exec- sp_executesql @sql;
- SET- @sql=- 'insert into openrowset('- 'SQLOLEDB'- ','- ''- +@TargetInstance+- ''- ';'- ''- +@TargetUID+- ''- ';'- ''- +@TargetPWD+- ''- ',['- +@TargetDBName+- '].[dbo].['- +@LocalDBName+- '])
- ('- +@- Column- +- ')
- select '- + @- Column- +- ' from ##tmp_table'
- exec- sp_executesql @sql;
- end
- --刪除多余數(shù)據(jù)
- SET- @sql=- 'delete openrowset('- 'SQLOLEDB'- ','- ''- +@TargetInstance+- ''- ';'- ''- +@TargetUID+- ''- ';'- ''- +@TargetPWD+- ''- ',['- +@TargetDBName+- '].[dbo].['- +@LocalDBName+- '])
- where '- +@PK_ID+- ' >'- +- cast- (@NumMax- as- nvarchar(200));
- drop- table- ##tmp_table;
- print- 'Success'- ;
- end- try
- begin- catch
- select- Error_number()- as- ErrorNumber,- --錯誤代碼
- Error_severity()- as- ErrorSeverity,- --錯誤嚴(yán)重級別,級別小于10 try catch 捕獲不到
- Error_state()- as- ErrorState ,- --錯誤狀態(tài)碼
- Error_Procedure()- as- ErrorProcedure ,- --出現(xiàn)錯誤的存儲過程或觸發(fā)器的名稱。
- Error_line()- as- ErrorLine,- --發(fā)生錯誤的行號
- Error_message()- as- ErrorMessage- --錯誤的具體信息
- drop- table- ##tmp_table;
- end- catch
- END
執(zhí)行存儲過程
- USE [- table- ]- --源表
- GO
- DECLARE- @return_value- int
- EXEC- @return_value = [dbo].[proc_DataUpdate]
- @TargetInstance = N- ''- ,- --遠(yuǎn)程數(shù)據(jù)庫實例 如目標(biāo)庫不在一個域,切勿使用內(nèi)網(wǎng)地址
- @TargetDBName = N- ''- ,- --遠(yuǎn)程數(shù)據(jù)庫名稱
- @TargetUID = N- ''- ,- --用戶名
- @TargetPWD = N- ''- ,- --密碼
- @LocalDBName=N- ''- ,- --用于更新表名 (源表)
- @PK_ID =N- ''- ,- --主鍵列(必須為Int)
- @- Column- =- 'ID,Name'- ,- --更新列名集合 例 'A,B,C'
- @ExecSize=200- --每次執(zhí)行條數(shù)
- SELECT- 'Return Value'- = @return_value
- GO
總結(jié)
以上所述是小編給大家介紹的SQL Server 遠(yuǎn)程更新目標(biāo)表數(shù)據(jù)的存儲過程,希望對大家有所幫助,
- MsSql 數(shù)據(jù)庫使用sqlplus創(chuàng)建DDL和DML操作方法
- SQL Server常見問題介紹及快速解決建議
- SQL Server中Table字典數(shù)據(jù)的查詢SQL示例代碼
- SQL SERVER 2012數(shù)據(jù)庫自動備份的方法
- 關(guān)于SQL server2008調(diào)試存儲過程的完整步驟
- SQL Server數(shù)據(jù)庫調(diào)整表中列的順序操作方法及遇到問題
- SQL Server中的SELECT會阻塞SELECT相關(guān)資料
- 利用數(shù)據(jù)庫trigger對安全進(jìn)行監(jiān)控
- 完成Excel動態(tài)鏈接外部數(shù)據(jù)庫
- 6.9英寸可還行 疑華為P9 Max現(xiàn)身數(shù)據(jù)庫
  - MsSql 數(shù)據(jù)庫使用sqlplus創(chuàng)建DDL和DML操作方法- 文章主要介紹了使用sqlplus創(chuàng)建DDL和DML操作方法,需要的朋友可以參考下,在window進(jìn)入命令行模式敲sqlplus就會... 
  - SQL Server常見問題介紹及快速解決建議- 本文旨在幫助SQL Server數(shù)據(jù)庫的使用人員了解常見的問題,及快速解決這些問題。這些問題是數(shù)據(jù)庫的常規(guī)管理問題,對于很多對數(shù)據(jù)庫沒有深入了解的朋友提供一個大概的常見問題框架。... 
  - SQL Server中Table字典數(shù)據(jù)的查詢SQL示例代碼- 文章主要給大家介紹了關(guān)于SQL Server中Table字典數(shù)據(jù)的查詢SQL的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著... 
  - SQL SERVER 2012數(shù)據(jù)庫自動備份的方法- 文章主要為大家詳細(xì)介紹了SQL SERVER 2012數(shù)據(jù)庫自動備份的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下為了防止數(shù)據(jù)丟失,這里給大家介紹SQL SERVER2012數(shù)據(jù)自動備... 
  - 關(guān)于SQL server2008調(diào)試存儲過程的完整步驟- 文章主要給大家分享介紹了關(guān)于sql server2008調(diào)試存儲過程的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編... 
  - SQL Server數(shù)據(jù)庫調(diào)整表中列的順序操作方法及遇到問題- 文章主要介紹了SQL Server 數(shù)據(jù)庫調(diào)整表中列的順序操作,文中給大家通過詳細(xì)步驟介紹了需求及問題描述 ,需要的朋友可以參考下SQL Server 數(shù)據(jù)庫中表一旦創(chuàng)建,我們不建議擅自調(diào)... 
  - SQL Server中的SELECT會阻塞SELECT相關(guān)資料- 文章主要給大家介紹了SQL Server中的SELECT會阻塞SELECT的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧前言在SQL Server中... 
  - 利用數(shù)據(jù)庫trigger對安全進(jìn)行監(jiān)控- 最近幫一個朋友看他們的網(wǎng)站安全問題,他們非常擔(dān)心系統(tǒng)中的數(shù)據(jù)被篡改,因為一旦篡改可能就別人兌換東西或者套現(xiàn)走了就會造成損失,而最典型的修改一般都是利用事務(wù)性不一致和一些數(shù)據(jù)庫中的溢出等錯誤和直接獲取權(quán)... 
  - 完成Excel動態(tài)鏈接外部數(shù)據(jù)庫- 我們有時需要在Excel中調(diào)取其他數(shù)據(jù)庫的數(shù)據(jù),并且希望其他數(shù)據(jù)庫數(shù)據(jù)改變時,Excel中調(diào)取的數(shù)據(jù)也隨之動態(tài)改變。下面介紹在Excel中通過“新建數(shù)據(jù)庫查詢”(MicrosoftQuery)的方法來實現(xiàn)動態(tài)鏈接數(shù)據(jù)庫。... 
  - 6.9英寸可還行 疑華為P9 Max現(xiàn)身數(shù)據(jù)庫- 中關(guān)村在線訊:眾所周知,華為P9國行版將于今日在國內(nèi)正式發(fā)布,按照華為的一貫風(fēng)格,在P9發(fā)布之后,很可能會再發(fā)布青春版以及Max版本,而后者的身影近日已經(jīng)在GFXBench跑分?jǐn)?shù)據(jù)庫中出現(xiàn)了。疑似華為P9Max現(xiàn)身數(shù)據(jù)庫。... 

