mssqlserver不同伺服器資料庫之間的資料操作
方法1:
--建立鏈結伺服器
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 '
方法2:
--連線遠端/區域網資料(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 b
set b.列a=a.列a
from openrowset( 'sqloledb ', 'sql伺服器名 '; '使用者名稱 '; '密碼 ',資料庫名.dbo.表名)as a inner join 本地表 b
on a.column1=b.column1
方法3:
--openquery用法需要建立乙個連線
--首先建立乙個連線建立鏈結伺服器
exec sp_addlinkedserver 'itsv ', ' ', 'sqloledb ', '遠端伺服器名或ip位址 '
--查詢
select *
from openquery(itsv, 'select * from 資料庫.dbo.表名 ')
--把本地表匯入遠端表
insert openquery(itsv, 'select * from 資料庫.dbo.表名 ')
select * from 本地表
--更新本地表
update b
set b.列b=a.列b
from openquery(itsv, 'select * from 資料庫.dbo.表名 ') as a
inner join 本地表 b on a.列a=b.列a
方法4:
--3、opendatasource/openrowset
select *
from opendatasource( 'sqloledb ', 'data source=ip/servername;user id=登陸名;password=密碼 ' ).test.dbo.roy_ta
--把本地表匯入遠端表
insert opendatasource( 'sqloledb ', 'data source=ip/servername;user id=登陸名;password=密碼 ').資料庫.dbo.表名
select * from 本地表
/************** 自我整理 ****************//* 建立遠端資料庫連線*/
exec sp_addlinkedserver 'itsv', //遠端連線名
' ',
'sqloledb',
'192.168.200.3\sqlexpress'; // 要訪問的伺服器
/* 登入資料庫伺服器*/
exec sp_addlinkedsrvlogin 'itsv', //遠端連線名
'false',
null,
'sa', //遠端資料庫登入名
'sa123'; //遠端資料庫登入密碼
/* 測試跨庫查詢是否執行*/
select *
from
itsv.dbvideo.dbo.td_camera_list;
[遠端連線名].[ 資料庫名].dbo.[該資料庫下的目標表名]
/* 刪除遠端資料庫連線*/
exec sp_droplinkedsrvlogin 'itsv', null;
exec sp_dropserver 'itsv';
exec sp_dropserver 'itsv', 'droplogins';
/* 檢視已存在的連線實體類*/
sp_helpserver select * from sys.sysservers
附:儲存過程名/檢視名 作用 舉例
sp_addlinkedserver 註冊遠端資料庫例項 exec sp_addlinkedserver 『instancename』
sp_dropserver 刪除遠端資料庫例項 exec sp_dropserver 『instancename』
sp_addlinkedsrvlogin 註冊遠端例項登陸訪問帳戶 exec sp_addlinkedsrvlogin 『instancename』, null
sp_droplinkedsrvlogin 刪除遠端例項登陸訪問帳戶 exec sp_droplinkedsrvlogin 'instancename','username'
sp_helpserver 當前例項已註冊的可訪問的例項(即檢視使用sp_addlinkedserver已註冊過的例項) sp_helpserver
sys.sysservers 功能同sp_helpserver select * from sys.sysservers
sys.linked_logins 檢視已註冊的登陸訪問帳戶(即檢視使用sp_addlinkedsrvlogin已註冊過的帳戶) select * from sys.linked_logins
sys.remote_logins 檢視已註冊的遠端訪問帳戶 select * from sys.remote_logins
sql server 跨庫訪問
最近在做跨庫來訪問不在同乙個資料庫的資料,語法格式如下所示 select from opendatasource sqloledb data source 遠端ip user id sa password 密碼 庫名.dbo.表名 根據該語法格式我寫了乙個語句如下所示 select from ope...
跨庫訪問 Oracle和sqlserver
from 一 在sqlserver中連線另乙個sqlserver庫資料 exec master.dbo.sp addlinkedserver server n 別名 srvproduct n 庫名 provider n sqloledb datasrc n 伺服器位址 exec master.dbo...
SQLServer 跨資料庫訪問
首先,你要知道跨資料庫訪問的語法,如下 select from openrowset sqloledb driver server 伺服器位址 uid sa pwd 密碼 資料庫名.dbo.表名 如果沒有啟用ad hoc distributed queries,查詢結果是出錯的,如下描述 exec ...