跨伺服器的SQL操作 (OPENROWSET)

2021-04-12 19:13:36 字數 1461 閱讀 9594

今天遇到跨伺服器資料庫同步的需求,總起來說應該有兩種方法 1、起本地事務,連線其它資料庫的操作由sql自己內部事務控制 2、 註冊分布式事務(先要前sql連線串中新增enlist = false;取消自動事務註冊)

下邊是第一種方法,使用openrowset,更新跨伺服器資料庫表

--openrowset('sqloledb','192.168.20.59';'sa';'sa','select * from cnkilogindb.dbo.cnki_illegalipinfo')

select a.* from openrowset('sqloledb','192.168.20.59';'sa';'sa','select * from cnkilogindb.dbo.cnki_illegalipinfo') as a

insert into openrowset('sqloledb','192.168.20.59';'sa';'sa','select * from cnkilogindb.dbo.cnki_illegalipinfo')(unitname,startip,endip,startipnum,endipnum) values('aa','bb','cc',1,1)

update openrowset('sqloledb','192.168.20.59';'sa';'sa','select * from cnkilogindb.dbo.cnki_illegalipinfo') set startipnum = 2,endipnum = 2 where id = 1

delete from openrowset('sqloledb','192.168.20.59';'sa';'sa','select * from cnkilogindb.dbo.cnki_illegalipinfo') where id = 1

該方法不能使用truncate table

---------------------msdasql  驅動

select   a.*  

from   openrowset('msdasql',  

'driver=;server=192.168.1.100;uid=sa;pwd=sa',  

dbo.checkrecord)   as   a  

下邊是第二種方法,摘自msdn

利用com+服務的分分布式事務控制,相關命名空間及為system.enterpriseservices.contextutil

相關方法是conn.enlistdistributedtransaction(itransaction trans)

void page_load()

catch (exception e)

}public class northwindsample

catch (sqlexception e)

finally}}

SQL跨伺服器操作

mssql可以跨伺服器遠端對mssql excel db2 oracle xml.等資料來源執行操作,對不同的資料來源提供不同的介面,這裡使用msdasql驅動介面作為示例。1.建立連線伺服器並建立鏈結伺服器登陸 exec sp addlinkedserver test remot msdasql ...

SQL 跨伺服器訪問

訪問不同電腦上的資料庫 遠端只要聯好網就一樣 如果經常訪問或資料量大,建議用鏈結伺服器 建立鏈結伺服器 exec sp addlinkedserver srv lnk sqloledb 遠端伺服器名或ip位址 exec sp addlinkedsrvlogin srv lnk false null,...

SQL跨伺服器查詢

sql跨伺服器查詢的二種實現方法 select from opendatasource sqloledb data source 遠端ip user id sa password 密碼 庫名.dbo.表名 insert 本地庫名.表名 select from opendatasource sqlol...