OPENDATASOURCE (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$] ;