對於跨不同伺服器的sql指令碼執行語言的摘要
來源:互聯網
上載者:User
伺服器|指令碼|執行
對於相關的資料庫指令碼的手動執行的資料互導功能!
關鍵的重點在於建立的串連關係,串連建立好後執行的資料庫相關的指令碼實現就方便的多了~~~~
1。從一個資料庫的一張表B中向另外的一個資料庫的表A(起碼有相同的欄位屬性,或欄位值)
insert into A(欄位1,欄位2。。。欄位n)
select 欄位1,欄位2,120,...欄位n
from OPENDATASOURCE('SQLOLEDB','Data Source=B所在的伺服器;User ID=使用者名稱;Password=登陸口令').B庫.dbo.B表
where 欄位1=? and ...
該操作一般用在查詢分析器中!
2。遊標的利用,在伺服器間傳遞資料的值
declare @GEN_ID nvarchar(4000)
declare @QUAN nvarchar(4000)
declare @FEE_STATUS_OPERATOR nvarchar(4000)
declare @FEE_STATUS_OPERATETIME nvarchar(4000)
declare @status_operateid nvarchar(4000)
declare @client_sname nvarchar(4000)
BEGIN TRAN STATUS
declare USR cursor for select d.欄位1,d.欄位2 from OPENDATASOURCE(
'SQLOLEDB',
'Data Source=伺服器1;User ID=;Password='
).庫1.dbo.表1 as g inner join OPENDATASOURCE(
'SQLOLEDB',
'Data Source=伺服器1;User ID=;Password='
).庫1.dbo.表1 as d on g.欄位1=d.欄位1 inner join OPENDATASOURCE(
'SQLOLEDB',
'Data Source=伺服器1;User ID=;Password='
).庫2.dbo.表1‘ as s on g.欄位1=s.欄位1 where g.欄位2=0 and g.欄位3=0 and s.欄位4=6
open USR
fetch next from USR into @GEN_ID,@QUAN
WHILE @@FETCH_STATUS = 0
BEGIN
update 庫A.dbo.表 set 欄位=@QUAN where 欄位1=rtrim(@GEN_ID)
fetch next from USR into @GEN_ID,@QUAN
end
close USR
deallocate USR
declare USR1 cursor for select 欄位1,欄位2,120,...欄位n
from OPENDATASOURCE(
'SQLOLEDB',
'Data Source=伺服器1;User ID=;Password='
).庫1.dbo.表1 as g inner join OPENDATASOURCE(
'SQLOLEDB',
'Data Source=伺服器1;User ID=;Password='
).庫1.dbo.表1 as d on g.欄位1=d.欄位1
where g.欄位2=0 and g.欄位3=0 and s.欄位4=6
open USR1
fetch next from USR into @GEN_ID,@FEE_STATUS_OPERATOR,@FEE_STATUS_OPERATETIME,@status_operateid,@client_sname
WHILE @@FETCH_STATUS = 0
BEGIN
insert into A(欄位1,欄位2。。。欄位n)
values(@GEN_ID,'2','0',@FEE_STATUS_OPERATOR,@FEE_STATUS_OPERATETIME,@status_operateid,@client_sname)
fetch next from USR1 into @GEN_ID,@FEE_STATUS_OPERATOR,@FEE_STATUS_OPERATETIME,@status_operateid,@client_sname
end
close USR1
deallocate USR1
----------------說明對於遊標的利用可以多次,唯一的缺點的就是執行的時間過長!對於這方面要權衡考慮!
if (@@error<>0)
begin
rollback tran STATUS
end
else
begin
commit tran STATUS
end
------------事物處理