OPENDATASOURCE (Transact-SQL)

提供特定連接資訊做為四部分物件名稱,而不使用連結伺服器名稱。

主題連結圖示Transact-SQL 語法慣例

語法

OPENDATASOURCE ( provider_name, init_string )

引數

  • provider_name
    這是登錄為用來存取資料來源之 OLE DB 提供者的 PROGID 的名稱。provider_name 的資料類型是 char,沒有預設值。

  • init_string
    這是傳遞至目的地提供者之 IDataInitialize 介面的連接字串。提供者字串語法是以分號隔開的關鍵字-值配對為基礎,例如:'keyword1=value;keyword2=value'

    如需在提供者上支援的特定關鍵字-值配對,請參閱 Microsoft Data Access SDK。這份文件集定義基本語法。下表列出 init_string 引數最常使用的關鍵字。

    關鍵字

    OLE DB 屬性

    有效值和描述

    資料來源

    DBPROP_INIT_DATASOURCE

    要連接的資料來源名稱。不同提供者以不同方式解譯這個名稱。如果是 SQL Server Native Client OLE DB 提供者,這表示伺服器的名稱。如果是 Jet OLE DB 提供者,這表示 .mdb 檔或 .xls 檔的完整路徑。

    位置

    DBPROP_INIT_LOCATION

    要連接的資料庫位置。

    擴充屬性

    DBPROP_INIT_PROVIDERSTRING

    提供者特定連接字串。

    連接逾時

    DBPROP_INIT_TIMEOUT

    逾時值,在此之後連接嘗試會失敗。

    使用者識別碼

    DBPROP_AUTH_USERID

    用於連接的使用者識別碼。

    密碼

    DBPROP_AUTH_PASSWORD

    用於連接的密碼。

    目錄

    DBPROP_INIT_CATALOG

    連接到資料來源的初始或預設目錄名稱。

    整合式安全性

    DBPROP_AUTH_INTEGRATED

    SSPI,用來指定 Windows 驗證

備註

唯有針對指定的提供者將 DisallowAdhocAccess 登錄選項明確設為 0 時,且已啟用 [特定分散式查詢] 進階組態選項時,才可使用 OPENDATASOURCE 來存取 OLE DB 資料來源的遠端資料。若未設定這些選項,預設行為便不允許特定存取。

OPENDATASOURCE 函數可使用於與連結伺服器名稱相同的 Transact-SQL 語法位置。因此,OPENDATASOURCE 可做為四部分名稱的第一部分使用,來參考 SELECT、INSERT、UPDATE 或 DELETE 陳述式中的資料表或檢視名稱,或參考 EXECUTE 陳述式中的遠端預存程序。執行遠端預存程序時,OPENDATASOURCE 應該參考 SQL Server 的另一個執行個體。OPENDATASOURCE 不接受變數做為其引數。

如同 OPENROWSET 函數,OPENDATASOURCE 只應該參考不常存取的 OLE DB 資料來源。請為存取多次的資料來源定義連結伺服器。OPENDATASOURCE 或 OPENROWSET 都不提供連結伺服器定義的所有功能,例如安全性管理和查詢目錄資訊的能力。每次在呼叫 OPENDATASOURCE 時,都必須提供所有連接資訊,包括密碼在內。

重要注意事項重要事項

Windows 驗證比 SQL Server 驗證更安全。可能的話,您應該使用 Windows 驗證。OPENDATASOURCE 不應與連接字串中的明確密碼一起使用。

每一個提供者的連接需求都類似於建立連結伺服器時的參數需求。許多常見提供者的詳細資料列於<sp_addlinkedserver (Transact-SQL)>主題中。

權限

任何使用者都可以執行 OPENDATASOURCE。您可以從連接字串判斷用來連接到遠端伺服器的權限。

範例

下列範例對伺服器 London 上的 SQL ServerPayroll 執行個體建立特定連接,並查詢 AdventureWorks.HumanResources.Employee 資料表。(使用 SQLNCLI 和 SQL Server 將會重新導向 SQL Server Native Client OLE DB 提供者的最新版)。

SELECT *
FROM OPENDATASOURCE('SQLNCLI',
    'Data Source=London\Payroll;Integrated Security=SSPI')
    .AdventureWorks.HumanResources.Employee

下列範例會建立與 1997 - 2003 格式之 Excel 試算表的特定連接。

SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\DataFolder\Documents\TestExcel.xls;Extended Properties=EXCEL 5.0')...[Sheet1$] ;