千家信息网

SQL Server如何远程更新目标表数据的存储过程

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍SQL Server如何远程更新目标表数据的存储过程,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!远程更新目标库数据的存储过程,适用于更新列名一致,主键为Int
千家信息网最后更新 2026年10月31日SQL Server如何远程更新目标表数据的存储过程

这篇文章主要介绍SQL Server如何远程更新目标表数据的存储过程,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

远程更新目标库数据的存储过程,适用于更新列名一致,主键为Int类型,可远程链接的数据库。

USE [Table]--切换到源表,就是数据最新的那个表GO/****** Object: StoredProcedure [dbo].[proc_DataUpdate] Script Date: 2018/5/4 15:08:56 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO-- =============================================-- Author: -- Create date: <2018-05-04>-- Description: <分批更新远程数据,仅支持主键为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),--主键列(必须为数字)@Column nvarchar(max),--更新列名集合@ExecSize int--每次执行数量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;--打开注释可不显示执行过程,提高速度begin try  --取最大值  set @sql = 'select @MaxID=MAX('+@PK_ID+') from '+@LocalDBName;  exec sp_executesql @sql,N'@MaxID int out',@MaxID out  --循环  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;    --记录执行最大值    SET @SQL='select @NumMax=MAX('+@PK_ID+') from ##tmp_table';    exec sp_executesql @sql,N'@NumMax int out',@NumMax out;    --记录执行最小值    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  --删除多余数据  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, --错误代码  Error_severity() as ErrorSeverity, --错误严重级别,级别小于10 try catch 捕获不到  Error_state() as ErrorState , --错误状态码  Error_Procedure() as ErrorProcedure , --出现错误的存储过程或触发器的名称。  Error_line() as ErrorLine, --发生错误的行号  Error_message() as ErrorMessage --错误的具体信息  drop table ##tmp_table;end catchEND

执行存储过程

USE [table] --源表GODECLARE @return_value intEXEC @return_value = [dbo].[proc_DataUpdate]@TargetInstance = N'',--远程数据库实例 如目标库不在一个域,切勿使用内网地址@TargetDBName = N'',--远程数据库名称@TargetUID = N'',--用户名@TargetPWD = N'',--密码@LocalDBName=N'',--用于更新表名 (源表)@PK_ID =N'',--主键列(必须为Int)@Column='ID,Name',--更新列名集合 例 'A,B,C'@ExecSize=200--每次执行条数SELECT 'Return Value' = @return_valueGO

以上是"SQL Server如何远程更新目标表数据的存储过程"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

数据 更新 过程 错误 存储 目标 数据库 最大 内容 名称 最大值 篇文章 级别 最小 一致 可不 代码 价值 信息 兴趣 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技互联网公司装修 与互联网科技公司 合肥互联网科技公司 腾讯科技 互联网女皇 齐家互联网科技有限公司 佰商互联网科技有限公司 镁科技互联网资讯平台 深圳卡尔迅互联网科技有限公司怎么样 哈尔滨秒房互联网科技有限公司 深圳互联网科技怎么样 科技与互联网的利与弊 哈尔滨新华互联网科技学院 剑昆互联网络科技有限公司临桂 杭州壁岐互联网科技有限公司 银行科技岗属于互联网吗 云南省自由互联网科技有限公司 广州互联网高科技取餐柜 兰石爱特工业互联网科技分公司 众联互联网络科技 武汉亿视互联网科技有限公司 深圳互联网科技公司 朗涯互联网科技 猫创互联网科技 互联网金融科技展 晋城互联网科技 卓翼科技产业互联网合作 上海创道互联网络科技有限公司 本届互联网大会上的黑科技 互联网科技对化妆品行业 科技互联网企业在行动
0