sp_addlinkedserver

建立連結伺服器。連結伺服器可讓您對 OLE DB 資料來源存取分散式異質性查詢。

sp_addlinkedserver
  @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

從 SQL Server 本機執行個體上的已知遠端和連結伺服器清單中移除伺服器。 

sp_dropserver
  @server = 'server' ,
    -- 要移除的伺服器
  @droplogins = {'droplogins' | NULL}
    -- 如果指定了 droplogins,也必須移除 server 的相關遠端和連結伺服器登入
    -- char(10),預設值是 NULL。

傳回碼值0 (成功) 或 1 (失敗)

權限:需要伺服器的 ALTER ANY LINKED SERVER 權限。

* 若要在移除伺服器時移除伺服器的所有遠端和連結伺服器登入,請使用 droplogins 引數。

[範例] 連接到 SQL Server,建立一個名叫 SEATTLESales 的連結伺服器。

 EXEC sp_addlinkedserver 
   'SEATTLESales',
   N'SQL Server'

[範例] 連接到 Microsoft Access 2002-2003

 EXEC sp_addlinkedserver 
   @server = 'SEATTLE Mktg',
  @provider = 'Microsoft.Jet.OLEDB.4.0',
  @srvproduct = 'OLE DB Provider for Jet',
  @datasrc = 'C:\MSOffice\Access\Samples\Northwind.mdb'

[範例] 連接到 Microsoft Access 2007

 EXEC sp_addlinkedserver
  @server = 'SEATTLE Mktg',
  @provider = Microsoft.ACE.OLEDB.12.0',
  @srvproduct = 'OLE DB Provider for ACE',
  @datasrc = 'C:\MSOffice\Access\Samples\Northwind.accdb'

[範例] 連接到 Microsoft Excel 1997 - 2003

 EXEC sp_addlinkedserver
  'ExcelShare',
  'Jet 4.0',
  'Microsoft.Jet.OLEDB.4.0',
  '\\MyServer\MyShare\Spreadsheets\DistExcl.xls',
  NULL,
  'Excel 5.0'

[範例] 連接到 Microsoft Excel 2007

EXEC sp_addlinkedserver 
  @server = N'ExcelDataSource',   @srvproduct=N'ExcelData',
  @provider=N'Microsoft.ACE.OLEDB.12.0',   @datasrc=N'C:\DataFolder\People.xlsx',   @provstr='EXCEL 12.0' ;

[範例] 連接到 Oracle,建立一個名為 LONDON Mktg 的連結伺服器

 EXEC sp_addlinkedserver
  @server = 'LONDON Mktg',
  @srvproduct = 'Oracle',
  @provider = 'MSDAORA',
  @datasrc = 'MyServer'

[範例] 連接到 ODBC,建立一個名為 SEATTLE Payroll 的連結伺服器

 EXEC sp_addlinkedserver 
  @server = 'SEATTLE Payroll',
  @srvproduct = '',
  @provider = 'MSDASQL',
  @datasrc = 'LocalServer'

[範例] 連接到 DB2

 EXEC sp_addlinkedserver
  @server='DB2',
  @srvproduct='Microsoft OLE DB Provider for DB2',
  @catalog='DB2',
  @provider='DB2OLEDB',
  @provstr='Initial Catalog=PUBS;
    Data Source=DB2;
    HostCCSID=1252;
    Network Address=XYZ;
    Network Port=50000;
    Package Collection=admin;
    Default Schema=admin;'

[範例] 連接到 文字檔

 --Create a linked server.
EXEC sp_addlinkedserver
  txtsrv,
  'Jet 4.0',
  'Microsoft.Jet.OLEDB.4.0',
  'c:\data\distqry',
  NULL,
  'Text'
GO

--Set up login mappings.
EXEC sp_addlinkedsrvlogin txtsrv, FALSE, Admin, NULL
GO

--List the tables in the linked server.
EXEC sp_tables_ex txtsrv
GO

--Query one of the tables: file1#txt
--using a four-part name.

SELECT *
FROM txtsrv...[file1#txt]

[範例] 移除遠端伺服器 ACCOUNTS 和所有相關聯的遠端登入。

 EXEC sp_dropserver 'ACCOUNTS', 'droplogins';

參考來源:
sp_addlinkedserver (Transact-SQL)
sp_dropserver (Transact-SQL)
sys.sysservers (Transact-SQL)

創作者介紹
創作者 tsuozoe 的頭像
tsuozoe

隨便寫寫的新天地

tsuozoe 發表在 痞客邦 留言(0) 人氣()