SQL Server數(shù)據(jù)庫(kù)遠(yuǎn)程更新目標(biāo)表數(shù)據(jù)的存儲(chǔ)過(guò)程
文章主要介紹了SQL Server 遠(yuǎn)程更新目標(biāo)表數(shù)據(jù)的存儲(chǔ)過(guò)程,適用于更新列名一致,主鍵為Int類型,具體實(shí)例代碼大家參考下本文本文給大家分享一個(gè)遠(yuǎn)程更新目標(biāo)庫(kù)數(shù)據(jù)的存儲(chǔ)過(guò)程,適用...
本文給大家分享一個(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
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;--打開(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
try
begin
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ā)器的名稱。
Error_line()
as
ErrorLine,
--發(fā)生錯(cuò)誤的行號(hào)
Error_message()
as
ErrorMessage
--錯(cuò)誤的具體信息
drop
table
##tmp_table;
end
catch
END
執(zhí)行存儲(chǔ)過(guò)程
USE [
table
]
--源表
GO
DECLARE
@return_value
int
EXEC
@return_value = [dbo].[proc_DataUpdate]
@TargetInstance = N
''
,
--遠(yuǎn)程數(shù)據(jù)庫(kù)實(shí)例 如目標(biāo)庫(kù)不在一個(gè)域,切勿使用內(nèi)網(wǎng)地址
@TargetDBName = N
''
,
--遠(yuǎn)程數(shù)據(jù)庫(kù)名稱
@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ù)的存儲(chǔ)過(guò)程,希望對(duì)大家有所幫助,
- MsSql 數(shù)據(jù)庫(kù)使用sqlplus創(chuàng)建DDL和DML操作方法
- SQL Server常見(jiàn)問(wèn)題介紹及快速解決建議
- SQL Server中Table字典數(shù)據(jù)的查詢SQL示例代碼
- SQL SERVER 2012數(shù)據(jù)庫(kù)自動(dòng)備份的方法
- 關(guān)于SQL server2008調(diào)試存儲(chǔ)過(guò)程的完整步驟
- SQL Server數(shù)據(jù)庫(kù)調(diào)整表中列的順序操作方法及遇到問(wèn)題
- SQL Server中的SELECT會(huì)阻塞SELECT相關(guān)資料
- 利用數(shù)據(jù)庫(kù)trigger對(duì)安全進(jìn)行監(jiān)控
- 完成Excel動(dòng)態(tài)鏈接外部數(shù)據(jù)庫(kù)
- 6.9英寸可還行 疑華為P9 Max現(xiàn)身數(shù)據(jù)庫(kù)
MsSql 數(shù)據(jù)庫(kù)使用sqlplus創(chuàng)建DDL和DML操作方法
文章主要介紹了使用sqlplus創(chuàng)建DDL和DML操作方法,需要的朋友可以參考下,在window進(jìn)入命令行模式敲sqlplus就會(huì)...
SQL Server常見(jiàn)問(wèn)題介紹及快速解決建議
本文旨在幫助SQL Server數(shù)據(jù)庫(kù)的使用人員了解常見(jiàn)的問(wèn)題,及快速解決這些問(wèn)題。這些問(wèn)題是數(shù)據(jù)庫(kù)的常規(guī)管理問(wèn)題,對(duì)于很多對(duì)數(shù)據(jù)庫(kù)沒(méi)有深入了解的朋友提供一個(gè)大概的常見(jiàn)問(wèn)題框架。...
SQL Server中Table字典數(shù)據(jù)的查詢SQL示例代碼
文章主要給大家介紹了關(guān)于SQL Server中Table字典數(shù)據(jù)的查詢SQL的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著...
SQL SERVER 2012數(shù)據(jù)庫(kù)自動(dòng)備份的方法
文章主要為大家詳細(xì)介紹了SQL SERVER 2012數(shù)據(jù)庫(kù)自動(dòng)備份的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下為了防止數(shù)據(jù)丟失,這里給大家介紹SQL SERVER2012數(shù)據(jù)自動(dòng)備...
關(guān)于SQL server2008調(diào)試存儲(chǔ)過(guò)程的完整步驟
文章主要給大家分享介紹了關(guān)于sql server2008調(diào)試存儲(chǔ)過(guò)程的完整步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編...
SQL Server數(shù)據(jù)庫(kù)調(diào)整表中列的順序操作方法及遇到問(wèn)題
文章主要介紹了SQL Server 數(shù)據(jù)庫(kù)調(diào)整表中列的順序操作,文中給大家通過(guò)詳細(xì)步驟介紹了需求及問(wèn)題描述 ,需要的朋友可以參考下SQL Server 數(shù)據(jù)庫(kù)中表一旦創(chuàng)建,我們不建議擅自調(diào)...
SQL Server中的SELECT會(huì)阻塞SELECT相關(guān)資料
文章主要給大家介紹了SQL Server中的SELECT會(huì)阻塞SELECT的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧前言在SQL Server中...
利用數(shù)據(jù)庫(kù)trigger對(duì)安全進(jìn)行監(jiān)控
最近幫一個(gè)朋友看他們的網(wǎng)站安全問(wèn)題,他們非常擔(dān)心系統(tǒng)中的數(shù)據(jù)被篡改,因?yàn)橐坏┐鄹目赡芫蛣e人兌換東西或者套現(xiàn)走了就會(huì)造成損失,而最典型的修改一般都是利用事務(wù)性不一致和一些數(shù)據(jù)庫(kù)中的溢出等錯(cuò)誤和直接獲取權(quán)...
完成Excel動(dòng)態(tài)鏈接外部數(shù)據(jù)庫(kù)
我們有時(shí)需要在Excel中調(diào)取其他數(shù)據(jù)庫(kù)的數(shù)據(jù),并且希望其他數(shù)據(jù)庫(kù)數(shù)據(jù)改變時(shí),Excel中調(diào)取的數(shù)據(jù)也隨之動(dòng)態(tài)改變。下面介紹在Excel中通過(guò)“新建數(shù)據(jù)庫(kù)查詢”(MicrosoftQuery)的方法來(lái)實(shí)現(xiàn)動(dòng)態(tài)鏈接數(shù)據(jù)庫(kù)。...
6.9英寸可還行 疑華為P9 Max現(xiàn)身數(shù)據(jù)庫(kù)
中關(guān)村在線訊:眾所周知,華為P9國(guó)行版將于今日在國(guó)內(nèi)正式發(fā)布,按照華為的一貫風(fēng)格,在P9發(fā)布之后,很可能會(huì)再發(fā)布青春版以及Max版本,而后者的身影近日已經(jīng)在GFXBench跑分?jǐn)?shù)據(jù)庫(kù)中出現(xiàn)了。疑似華為P9Max現(xiàn)身數(shù)據(jù)庫(kù)。...