MSSqlServer訪問遠程數據庫


--第一部分(要點)
--永久訪問方式(需對訪問遠程數據庫進行經常性操作)時設置鏈接數據庫
Exec sp_addlinkedserver 'MyLinkServer','','SQLOLEDB','遠程服務器名或ip地址'
--或:
Exec sp_addlinkedserver '遠程服務器',N'SQL Server'
Exec sp_addlinkedsrvlogin 'MyLinkServer','false',null,'用戶名','密碼'

--返回本地服務器中定義的鏈接服務器列表
Exec sp_linkedservers
--返回表的字段中,其中對MSSQL而言:SRV_NAME(鏈接服務器的名稱),SRV_DATASOURCE(與指定鏈接服務器對應的服務器名)

--訪問表時以四部分名稱形式
--查詢示例
Select * From MyLinkServer.數據庫名.dbo.表名

--導入示例
Select * Into 表 From MyLinkServer.數據庫名.dbo.表名

--以后不再使用時刪除鏈接服務器
Exec sp_dropserver 'MyLinkServer','droplogins'   --以用戶名登錄時
--或:
Exec sp_dropserver 'MyLinkServer'   --未以用戶名登錄時

--連接遠程/局域網數據(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

--OpenQuery用法需要創建一個連接
--首先創建一個連接創建鏈接服務器
Exec sp_addlinkedserver 'MyLinkServer','','SQLOLEDB','遠程服務器名或IP'
--查詢
Select * From OpenQuery(MyLinkServer,'Select * From 數據庫.dbo.表名')
--把本地表導入遠程表
Insert OpenQuery(MyLinkServer,'Select * From 數據庫.dbo.表名')
Select * From 本地表
--更新本地表
Update b
Set b.列B=a.列B
From OpenQuery(MyLinkServer,'Select * From 數據庫.dbo.表名') As a
Inner Join 本地表 b On a.列A=b.列A

--3、OpenDataSource
Select * From OpenDataSource('SQLOLEDB','Data Source=遠程服務器名或IP;User ID=登陸名;Password=密碼').test.dbo.roy_ta
--把本地表導入遠程表
Insert OpenDataSource('SQLOLEDB','Data Source=遠程服務器名或IP;User ID=登陸名;Password=密碼').數據庫.dbo.表名
Select * From 本地表


--第二部分(實際示例)
--OpenRowSet使用OLEDB的一些例子
Select * From OpenRowSet('SQLOLEDB','Server=(local);PWD=***;UID=sa;','Select * From TB.dbo.school') As t
Select * From OpenRowSet('SQLOLEDB','Server=(local);PWD=***;UID=sa;',TB.dbo.school) As t
Select * From OpenRowSet('SQLOLEDB','Server=(local);Trusted_Connection=yes;',TB.dbo.school) As t
Select * From OpenRowSet('SQLOLEDB','(local)';'sa';'***','Select * From TB.dbo.school') As t
Select * From OpenRowSet('SQLOLEDB','(local)';'sa';'***',TB.dbo.school) As t
Select * From OpenRowSet('SQLOLEDB','(local)';'sa';'***','Select school.id As id1,people.id As id2 From TB.dbo.school Inner Join TB.dbo.people On school.id=people.id') As t

--OpenRowSet使用SQLNCLI的一些例子(SQLNCLI在SqlServer2005以上才能使用)
Select * From OpenRowSet('SQLNCLI','(local)';'sa';'***','Select * From TB.dbo.school') As t
Select * From OpenRowSet('SQLNCLI','Server=(local);Trusted_Connection=yes;','Select * From TB.dbo.school') As t
Select * From OpenRowSet('SQLNCLI','Server=(local);UID=sa;PWD=***;','Select * From TB.dbo.school') As t
Select * From OpenRowSet('SQLNCLI','Server=(local);UID=sa;PWD=***;',TB.dbo.school) As t
Select * From OpenRowSet('SQLNCLI','Server=(local);UID=sa;PWD=***;DataBase=TB','Select * From dbo.school') As t

--OpenRowSet其他使用
Insert OpenRowSet('SQLNCLI','Server=(local);Trusted_Connection=yes;','Select name From TB.dbo.school Where id=1') Values('ghjkl') /*要不要Where都一樣,插入一行*/
Update OpenRowSet('SQLNCLI','Server=(local);Trusted_Connection=yes;','Select name From TB.dbo.school Where id=1') Set name='kkkkkk'
Delete From OpenRowSet('SQLNCLI','Server=(local);Trusted_Connection=yes;','Select name From TB.dbo.school Where id=1')

--OpenDataSource使用SQLNCLI的一些例子
Select * From OpenDataSource('SQLNCLI','Server=(local);UID=sa;PWD=***;').TB.dbo.school As t
Select * From OpenDataSource('SQLNCLI','Server=(local);UID=sa;PWD=***;DataBase=TB').TB.dbo.school As t

--OpenDataSource使用OLEDB的例子
Select * From OpenDataSource('SQLOLEDB','Server=(local);Trusted_Connection=yes;').TB.dbo.school As t

--OpenDataSource其他使用
Insert OpenDataSource('SQLNCLI','Server=(local);Trusted_Connection=yes;').TB.dbo.school(name) Values('ghjkl') /*要不要Where都一樣,插入一行*/
Update OpenDataSource('SQLNCLI','Server=(local);Trusted_Connection=yes;').TB.dbo.school Set name='kkkkkk'
Delete From OpenDataSource('SQLNCLI','Server=(local);Trusted_Connection=yes;').TB.dbo.school Where id=1

--OpenQuery使用OLEDB的一些例子
Exec sp_addlinkedserver 'MyLinkServer','','SQLOLEDB','(local)'
Exec sp_addlinkedsrvlogin 'MyLinkServer','false',null,'sa','***'
Select * From OpenQuery(MyLinkServer, 'Select *  From TB.dbo.school')

--OpenQuery使用SQLNCLI的一些例子
Exec sp_addlinkedserver 'MyLinkServerA','','SQLNCLI','(local)'
Exec sp_addlinkedsrvlogin 'MyLinkServerA','false',null,'sa','***'
Select * From OpenQuery(MyLinkServerA,'Select *  From TB.dbo.school')

--OpenQuery其他使用
Insert OpenQuery(MyLinkServerA,'Select name From TB.dbo.school Where id=1') Values('ghjkl')  /*要不要Where都一樣,插入一行*/
Update OpenQuery(MyLinkServerA,'Select name From TB.dbo.school Where id=1') Set name='kkkkkk'
Delete OpenQuery(MyLinkServerA,'Select name From TB.dbo.school Where id=1')


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM