1. 程式人生 > >SQLServer中跨伺服器跨資料庫之間的資料操作

SQLServer中跨伺服器跨資料庫之間的資料操作

首先必須理解一個概念:

select * from sys.servers         (檢視系統表,看原來的伺服器名)

要想跨域就必須在以上資訊中可以檢索到!

怎樣新增?

--建立連結伺服器  exec sp_addlinkedserver   'ITSV '' ''SQLOLEDB ''遠端伺服器名或ip地址 '  exec sp_addlinkedsrvlogin  'ITSV ''false ',null'使用者名稱 ''密碼 '  --查詢示例  select from ITSV.資料庫名.dbo.表名  --匯入示例  select
 into 表 from ITSV.資料庫名.dbo.表名 
--以後不再使用時刪除連結伺服器  exec sp_dropserver  'ITSV ''droplogins '  --連線遠端/區域網資料(openrowset/openquery/opendatasource)  --1、openrowset  --查詢示例  select from openrowset( 'SQLOLEDB ''sql伺服器名 ''使用者名稱 ''密碼 ',資料庫名.dbo.表名)  --生成本地表  select into 表 from openrowset( 
'SQLOLEDB ''sql伺服器名 ''使用者名稱 ''密碼 ',資料庫名.dbo.表名)  --把本地表匯入遠端表  insert openrowset( 'SQLOLEDB ''sql伺服器名 ''使用者名稱 ''密碼 ',資料庫名.dbo.表名)  select *from 本地表  --更新本地表  update  set b.列A=a.列A  from openrowset( 'SQLOLEDB ''sql伺服器名 ''使用者名稱 ''密碼 ',資料庫名.dbo.表名)as inner join 本地表 b  on a.column1=b.column1 
--openquery用法需要建立一個連線  --首先建立一個連線建立連結伺服器  exec sp_addlinkedserver   'ITSV '' ''SQLOLEDB ''遠端伺服器名或ip地址 '  --查詢  select  FROM openquery(ITSV,  'SELECT *  FROM 資料庫.dbo.表名 ' --把本地表匯入遠端表  insert openquery(ITSV,  'SELECT *  FROM 資料庫.dbo.表名 ' select from 本地表  --更新本地表  update  set b.列B=a.列B  FROM openquery(ITSV,  'SELECT * FROM 資料庫.dbo.表名 'as a   inner join 本地表 b on a.列A=b.列A  --3、opendatasource/openrowset  SELECT    FROM   opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=登陸名;Password=密碼 ' ).test.dbo.roy_ta  --把本地表匯入遠端表 

測試演示:

user master;

exec sp_addlinkedserver   '41f0bcc ', ' ', 'SQLOLEDB ', '192.168.7.21' 
exec sp_addlinkedsrvlogin  '41f0bcc ', 'false ',null, 'sa ', 'q1w2e3e3r45tr4t5' 

select * from [41f0bcc].eStoreDB.dbo.V_standard_ORG