国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > SQL Server > 正文

SQL Server 遠(yuǎn)程更新目標(biāo)表數(shù)據(jù)的存儲(chǔ)過(guò)程

2024-08-31 00:43:52
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

本文給大家分享一個(gè)遠(yuǎn)程更新目標(biāo)庫(kù)數(shù)據(jù)的存儲(chǔ)過(guò)程,適用于更新列名一致,主鍵為Int類型,可遠(yuǎn)程鏈接的數(shù)據(jù)庫(kù)。

USE [Table]--切換到源表,就是數(shù)據(jù)最新的那個(gè)表GO/****** Object: StoredProcedure [dbo].[proc_DataUpdate] Script Date: 2018/5/4 15:08:56 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- 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ù)量ASdeclare @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;--打開(kāi)注釋可不顯示執(zhí)行過(guò)程,提高速度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 trybegin catch  select Error_number() as ErrorNumber, --錯(cuò)誤代碼  Error_severity() as ErrorSeverity, --錯(cuò)誤嚴(yán)重級(jí)別,級(jí)別小于10 try catch 捕獲不到  Error_state() as ErrorState , --錯(cuò)誤狀態(tài)碼  Error_Procedure() as ErrorProcedure , --出現(xiàn)錯(cuò)誤的存儲(chǔ)過(guò)程或觸發(fā)器的名稱?! rror_line() as ErrorLine, --發(fā)生錯(cuò)誤的行號(hào)  Error_message() as ErrorMessage --錯(cuò)誤的具體信息  drop table ##tmp_table;end catchEND
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 平江县| 万安县| 弋阳县| 平利县| 余庆县| 乐亭县| 桐乡市| 永善县| 共和县| 门源| 邵阳县| 邢台市| 郑州市| 汝州市| 从江县| 临夏市| 湘西| 寻甸| 丹江口市| 兰溪市| 厦门市| 临沭县| 凉山| 渝中区| 黄石市| 东光县| 锡林郭勒盟| 铜山县| 观塘区| 大悟县| 合江县| 临夏市| 洱源县| 田阳县| 甘孜| 台东市| 龙里县| 乐山市| 扎赉特旗| 手游| 新河县|