1. 程式人生 > 其它 >SQL Server 跨伺服器查詢

SQL Server 跨伺服器查詢

--查詢示例 
select * from openrowset( 'SQLOLEDB', 'sql伺服器名'; '使用者名稱'; '密碼',資料庫名.dbo.表名)

--生成本地表 
select * intofrom openrowset( 'SQLOLEDB', 'sql伺服器名'; '使用者名稱'; '密碼 ',資料庫名.dbo.表名)

--把本地表匯入遠端表 
insert openrowset( 'SQLOLEDB', 'sql伺服器名'; '使用者名稱'; '密碼',資料庫名.dbo.表名) 
select *from 本地表

--更新本地表 
update b 
set
b.列A=a.列A from openrowset( 'SQLOLEDB', 'sql伺服器名'; '使用者名稱'; '密碼',資料庫名.dbo.表名)as a inner join 本地表 b on a.column1=b.column1

第一種方法:

--單表查詢

select * from OPENDATASOURCE('SQLOLEDB','Data Source=遠端實列名;User ID=sa;Password=密碼').庫名.dbo.表名

--多表關聯查詢

 SELECT  A.*

 FROM    OPENROWSET('SQLOLEDB'

, '遠端實列名
' ; 'sa' ; '密碼', 庫名.dbo.表名1) A LEFT JOIN OPENROWSET('SQLOLEDB' , '遠端實列名' ; 'sa' ; '密碼', 庫名.dbo.表名2) B ON A.ID = B.ID WHERE --條件

--先連線遠端伺服器:

EXEC sp_addlinkedserver '別名','','MSDASQL',NULL,NULL,'DRIVER={SQL Server};SERVER=遠端實列名;UID=使用者;PWD=密碼;'

exec sp_addlinkedsrvlogin  @rmtsrvname
='別名',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密碼' GO --然後我們就可以關聯遠端伺服器中的表進行查詢、修改等操作; select * from 別名.庫名.dbo.表名 insert 庫名.dbo.表名 select * from 別名.庫名.dbo.表名

解決SQL Server 阻止了對元件Ad Hoc Distributed Queries訪問的方法

兩臺伺服器都設定下

1.開啟Ad Hoc Distributed Queries元件,在sql查詢編輯器中執行如下語句:

1 2 3 4 execsp_configure'showadvancedoptions',1 reconfigure execsp_configure'AdHocDistributedQueries',1 reconfigure

2.關閉Ad Hoc Distributed Queries元件,在sql查詢編輯器中執行如下語句:

1 2 3 4 execsp_configure'AdHocDistributedQueries',0 reconfigure execsp_configure'showadvancedoptions',0 reconfigure

SQL Server Management Studio登入後修改