日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

sp_addlinkedserver (Transact-SQL)

發布時間:2024/4/15 数据库 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sp_addlinkedserver (Transact-SQL) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

創建鏈接服務器。鏈接服務器讓用戶可以對 OLE DB 數據源進行分布式異類查詢。在使用 sp_addlinkedserver 創建鏈接服務器后,可對該服務器運行分布式查詢。如果鏈接服務器定義為 SQL Server 實例,則可執行遠程存儲過程。

Transact-SQL 語法約定

?語法 sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ]
?????[ , [ @provider= ] 'provider_name' ]
?????[ , [ @datasrc= ] 'data_source' ]
?????[ , [ @location= ] 'location' ]
?????[ , [ @provstr= ] 'provider_string' ]
?????[ , [ @catalog= ] 'catalog' ] ?參數 [ @server = ] 'server'

要創建的鏈接服務器的名稱。server 的數據類型為 sysname,沒有默認值。

[ @srvproduct = ] 'product_name'

要添加為鏈接服務器的 OLE DB 數據源的產品名稱。product_name 的數據類型為 nvarchar(128),默認值為 NULL。如果為 SQL Server,則不必指定 provider_name、data_source、location、provider_string 和 catalog。

[ @provider = ] 'provider_name'

與此數據源對應的 OLE DB 訪問接口的唯一編程標識符 (PROGID)。對于當前計算機中安裝的指定 OLE DB 訪問接口,provider_name 必須唯一。provider_name 的數據類型為 nvarchar(128),默認值為 NULL;但如果忽略 provider_name,則使用 SQLNCLI。(使用 SQLNCLI 并且 SQL Server 將重定向到 SQL Server Native Client OLE DB 訪問接口的最新版本。)OLE DB 訪問接口應以指定的 PROGID 在注冊表中注冊。

[ @datasrc = ] 'data_source'

由 OLE DB 訪問接口解釋的數據源的名稱。data_source 的數據類型為 nvarchar(4000)。data_source 作為 DBPROP_INIT_DATASOURCE 屬性傳遞以初始化 OLE DB 訪問接口。

[ @location = ] 'location'

由 OLE DB 訪問接口解釋的數據庫的位置。location 的數據類型為 nvarchar(4000),默認值為 NULL。location 作為 DBPROP_INIT_LOCATION 屬性傳遞以初始化 OLE DB 訪問接口。

[ @provstr = ] 'provider_string'

OLE DB 訪問接口特定的連接字符串,它可標識唯一的數據源。provider_string 的數據類型為 nvarchar(4000),默認值為 NULL。provstr 或傳遞給 IDataInitialize 或設置為 DBPROP_INIT_PROVIDERSTRING 屬性以初始化 OLE DB 訪問接口。

當針對 SQL Server Native Client OLE DB 訪問接口創建鏈接服務器時,可以使用 SERVER 關鍵字來指定實例,即使用 SERVER=servername\instancename 指定特定 SQL Server 實例。servername 是運行 SQL Server 的計算機的名稱,instancename 是用戶要連接的特定 SQL Server 實例的名稱。

注意:
若要訪問鏡像數據庫,則連接字符串必須包含數據庫名稱。該名稱是數據訪問接口啟用故障轉移嘗試所必需的??梢栽?@provstr@catalog 參數中指定數據庫。此外,連接字符串還可以提供故障轉移伙伴名稱。有關詳細信息,請參閱建立到數據庫鏡像會話的初始連接。
[ @catalog = ] 'catalog'

與 OLE DB 訪問接口建立連接時所使用的目錄。catalog 的數據類型為 sysname,默認值為 NULL。catalog 作為 DBPROP_INIT_CATALOG 屬性傳遞以初始化 OLE DB 訪問接口。在針對 SQL Server 實例定義鏈接服務器時,目錄指向鏈接服務器映射到的默認數據庫。

?返回代碼值

0(成功)或 1(失敗)

?結果集

無。

?注釋

下表顯示為能通過 OLE DB 訪問數據源而建立鏈接服務器的方法。對于特定的數據源,可以使用多種方法為其設置鏈接服務器;該表中可能有多行適用于一種數據源類型。該表還顯示了用于設置鏈接服務器的 sp_addlinkedserver 參數值。

遠程 OLE DB 數據源 OLE DB 訪問接口 product_name provider_name data_source location provider_string catalog

SQL Server

Microsoft SQL Server Native Client OLE DB 訪問接口

SQL Server 1(默認值)

?

?

?

?

?

SQL Server

Microsoft SQL Server Native Client OLE DB 訪問接口

?

SQLNCLI

SQL Server 的網絡名稱(用于默認實例)

?

?

數據庫名稱(可選)

SQL Server

Microsoft SQL Server Native Client OLE DB 訪問接口

?

SQLNCLI

servername\instancename(用于特定實例)

?

?

數據庫名稱(可選)

Oracle

Microsoft OLE DB Provider for Oracle

任何2

MSDAORA

用于 Oracle 數據庫的 SQL*Net 別名

?

?

?

Oracle,版本 8 及更高版本

Oracle Provider for OLE DB

任何

OraOLEDB.Oracle

用于 Oracle 數據庫的別名

?

?

?

Access/Jet

Microsoft OLE DB Provider for Jet

任何

Microsoft.Jet.OLEDB.4.0

Jet 數據庫文件的完整路徑

?

?

?

ODBC 數據源

Microsoft OLE DB Provider for ODBC

任何

MSDASQL

ODBC 數據源的系統 DSN

?

?

?

ODBC 數據源

Microsoft OLE DB Provider for ODBC

任何

MSDASQL

?

?

ODBC 連接字符串

?

文件系統

Microsoft OLE DB Provider for Indexing Service

任何

MSIDXS

索引服務目錄名稱

?

?

?

Microsoft Excel 電子表格

Microsoft OLE DB Provider for Jet

任何

Microsoft.Jet.OLEDB.4.0

Excel 文件的完整路徑

?

Excel 5.0

?

IBM DB2 數據庫

Microsoft OLE DB Provider for DB2

任何

DB2OLEDB

?

?

請參閱 Microsoft OLE DB Provider for DB2 文檔。

DB2 數據庫的目錄名稱

1 這種設置鏈接服務器的方式強制鏈接服務器的名稱與 SQL Server 遠程實例的網絡名稱相同。使用 data_source 指定服務器。

2“任何”指產品名稱可以任意。

如 果未指定訪問接口名稱或將 SQL Server 指定為產品名稱,則 Microsoft SQL Server Native Client OLE DB 訪問接口將是用于 SQL Server 的訪問接口。即使指定了較早版本的訪問接口名稱 SQLOLEDB,在保存到目錄時該名稱也將改為 SQLNCLI。

data_source、location、provider_string 和 catalog 參數標識鏈接服務器所指向的一個或多個數據庫。如果其中任一參數為 NULL,則不設置相應的 OLE DB 初始化屬性。

在群集環境中,當指定指向 OLE DB 數據源的文件名時,應使用通用命名規則 (UNC) 名稱或共享驅動器指定位置。

不能在用戶定義的事務內執行 sp_addlinkedserver。

安全說明:
如果使用 sp_addlinkedserver 創建鏈接服務器,則將為所有本地登錄添加默認自映射。對于非 SQL Server 訪問接口,通過 SQL Server 驗證的登錄名也許能夠以 SQL Server 服務帳戶身份訪問該訪問接口。管理員應考慮使用 sp_droplinkedsrvlogin <linkedserver_name>, NULL 刪除全局映射。
?權限

要求具有 ALTER ANY LINKED SERVER 權限。

?示例

A. 使用 Microsoft SQL Server Native Client OLE DB 訪問接口

下面的示例將創建一個名為 SEATTLESales 的鏈接服務器。產品名稱為 SQL Server,未使用訪問接口名稱。

USE master;
GO
EXEC sp_addlinkedserver
'SEATTLESales',
N'SQL Server'
GO

下例使用 SQL Server Native Client OLE DB 訪問接口在 SQL Server 實例中創建鏈接服務器 S1_instance1。

EXEC sp_addlinkedserver
@server='S1_instance1',
@srvproduct='',
@provider='SQLNCLI',
@datasrc='S1\instance1'

B. 使用 Microsoft OLE DB Provider for Microsoft Access

Microsoft.Jet.OLEDB.4.0 訪問接口連接到使用 2002-2003 格式的 Microsoft Access 數據庫。下面的示例將創建一個名為 SEATTLE Mktg 的鏈接服務器。

注意:
該示例假設已安裝 Microsoft Access 和 Northwind 示例數據庫,并且 Northwind 數據庫位于 C:\Msoffice\Access\Samples 中。
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'
GO

Microsoft.ACE.OLEDB.12.0 訪問接口連接到使用 2007 格式的 Microsoft Access 數據庫。下面的示例將創建一個名為 SEATTLE Mktg 的鏈接服務器。

注意:
該示例假設已安裝 Microsoft Access 和 Northwind 示例數據庫,并且 Northwind 數據庫位于 C:\Msoffice\Access\Samples 中。
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'
GO

使用 Microsoft OLE DB Provider for Oracle

下例創建一個名為 LONDON?Mktg 的鏈接服務器,它使用 Microsoft OLE DB Provider for Oracle 并假定 Oracle 數據庫的 SQL*Net 別名為 MyServer。

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

D. 將 Microsoft OLE DB Provider for ODBC 與 data_source 參數一起使用

下例創建一個名為 SEATTLE Payroll 的鏈接服務器,它使用 Microsoft OLE DB Provider for ODBC (MSDASQL) 以及 data_source 參數。

注意:
在使用該鏈接服務器之前,必須在該服務器中將指定的 ODBC 數據源名稱定義為系統 DSN。
EXEC sp_addlinkedserver
@server = 'SEATTLE Payroll',
@srvproduct = '',
@provider = 'MSDASQL',
@datasrc = 'LocalServer'
GO

E. 將 Microsoft OLE DB Provider 用于 Excel 電子表格

若 要創建使用 Microsoft OLE DB Provider for Jet 訪問 1997 - 2003 格式的 Excel 電子表格的鏈接服務器定義,請首先通過指定要在 Excel 工作表中選擇的行和列在 Excel 中創建一個命名范圍。這樣,可以在分布式查詢中將此范圍的名稱引用為表名稱。

EXEC sp_addlinkedserver 'ExcelSource',
'Jet 4.0',
'Microsoft.Jet.OLEDB.4.0',
'c:\MyData\DistExcl.xls',
NULL,
'Excel 5.0'
GO

若要訪問 Excel 電子表格中的數據,請將單元范圍與名稱相關聯。以下查詢通過使用先前設置的鏈接服務器,將指定的命名范圍 SalesData 作為表來訪問。

SELECT *
FROM ExcelSource...SalesData
GO

如果 SQL Server 在可以訪問遠程共享的域帳戶下運行,則可以使用 UNC 路徑來代替映射驅動器。

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

若要連接到 Excel 2007 格式的 Excel 電子表格,請使用 ACE 訪問接口。

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' ;

H. 使用 Microsoft OLE DB Provider for Jet 訪問文本文件

以下示例創建直接訪問文本文件的鏈接服務器,而沒有將這些文件鏈接為 Access .mdb 文件中的表。訪問接口為 Microsoft.Jet.OLEDB.4.0,訪問接口字符串為 Text。

數據源是包含文本文件的目錄的完整路徑。schema.ini 文件(描述文本文件的結構)必須與此文本文件存在于相同的目錄中。有關如何創建 Schema.ini 文件的詳細信息,請參閱 Jet 數據庫引擎文檔。

--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]

I. 使用 Microsoft OLE DB Provider for DB2

以下示例創建名為 DB2 的鏈接服務器,該服務器使用 Microsoft OLE DB Provider for 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;' ?請參閱

參考

分布式查詢存儲過程 (Transact-SQL)
sp_addlinkedsrvlogin (Transact-SQL)
sp_addserver (Transact-SQL)
sp_dropserver (Transact-SQL)
sp_serveroption (Transact-SQL)
sp_setnetname (Transact-SQL)
系統存儲過程 (Transact-SQL)
系統表 (Transact-SQL)

其他資源

為委托配置鏈接服務器
與 SQL Server 一起測試過的 OLE DB 訪問接口

總結

以上是生活随笔為你收集整理的sp_addlinkedserver (Transact-SQL)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。