T-SQL筆記5_跨DB Server SQL存取_sp_addlinkedserver_sp_dropserver_跨DB存取opendatasource
通常會先下
EXEC sp_helpserver
SELECT * FROM master.dbo.sysservers
這兩個功能都一樣
可以查看所有 linked server 資訊
只要是在此集合中的各個DB Server都是能相互進行跨存取的
若沒有則要透過
sp_addlinkedserver語法先建立連線
EXEC sp_addlinkedserver
@server='192.168.2.66',--被訪問的伺服器別名(習慣上直接使用目標伺服器IP,或取個別名如:JOY)
@srvproduct='',
@provider='SQLOLEDB',
@datasrc='192.168.2.66' --要訪問的伺服器
@server = 'server' ,
-- 要建立的連結伺服器名稱。
@srvproduct = 'product_name' ,
-- 加入的 OLE DB 資料來源產品名稱。
-- nvarchar(128),預設值是 NULL。
@provider = 'provider_name' ,
-- 唯一程式化識別碼 (PROGID)。
-- nvarchar(128),預設值是 NULL。
@datasrc = 'data_source' ,
-- 資料來源名稱。
-- nvarchar(4000),DBPROP_INIT_DATASOURCE 屬性。
@location = 'location' ,
-- 資料庫位置。
-- nvarchar(4000),預設值是 NULL,DBPROP_INIT_LOCATION 屬性。
@provstr = 'provider_string' ,
-- 連接字串,用來識別唯一資料來源。
-- nvarchar(4000),預設值是 NULL,DBPROP_INIT_PROVIDERSTRING 屬性。
@catalog = 'catalog'
-- 所用的目錄。
-- 是 sysname,預設值是 NULL,DBPROP_INIT_CATALOG 屬性。
傳回碼值:0 (成功) 或 1 (失敗)
權限:需要伺服器的 ALTER ANY LINKED SERVER 權限。
* 資料來源產品名稱如果是 SQL Server,則不必指定 provider_name、data_source、location、provider_string 和 catalog。
* 連結伺服器資料紀錄於 master.dbo.sysservers 中。
而若是要移除連結
則是透過 sp_dropserver語法
sp_dropserver
@server = 'server' ,
-- 要移除的伺服器
@droplogins = {'droplogins' | NULL}
-- 如果指定了 droplogins,也必須移除 server 的相關遠端和連結伺服器登入
-- char(10),預設值是 NULL。
傳回碼值:0 (成功) 或 1 (失敗)
權限:需要伺服器的 ALTER ANY LINKED SERVER 權限。
* 若要在移除伺服器時移除伺服器的所有遠端和連結伺服器登入,請使用 droplogins 引數。
select 或其他異動操作時要下完整
[OtherServerName].[OtherDB].[dbo].[OtherTable]
[DB Server IP].[DB名稱].[dbo].[Table名稱]
Ref:
https://dotblogs.com.tw/puma/2009/02/05/7038
https://www.itread01.com/content/1546281935.html
http://sharedjustin.blogspot.com/2013/08/sql-serverdb-link.html
https://fannys23.pixnet.net/blog/post/25754408
留言
張貼留言