2012年9月19日 星期三

【Transact-SQL】參考:OPENDATASOURCE

先筆記。




Transact-SQL 參考
OPENDATASOURCE
不使用鏈結的伺服器名,而提供特殊的連接資訊,並將其作為四部分物件名的一部分。
語法
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 OLE DB 提供程式來說,這會指明伺服器的名稱。對於 Jet OLE DB 提供程式來說,這會指明 .mdb 文件或 .xls 檔的完整路徑。
位置 DBPROP_INIT_LOCATION 要連接的資料庫的位置。
擴展屬性 DBPROP_INIT_PROVIDERSTRING 提供程式特定的連接字串。
連接超時 DBPROP_INIT_TIMEOUT 超時值,在該超時值後,連接嘗試將失敗。
用戶 ID DBPROP_AUTH_USERID 用於該連接的用戶 ID。
密碼 DBPROP_AUTH_PASSWORD 用於該連接的密碼。
目錄 DBPROP_INIT_CATALOG 連接到資料源時的初始或默認的目錄名稱。

注釋
OPENDATASOURCE 函數可以在能夠使用鏈結伺服器名的相同 Transact-SQL 語法位置中使用。因此,就可以將 OPENDATASOURCE 用作四部分名稱的第一部分,該名稱指的是 SELECT、INSERT、UPDATE 或 DELETE 語句中的表或視圖的名稱;或者指的是 EXECUTE 語句中的遠端存儲過程。當執行遠端存儲過程時,OPENDATASOURCE 應該指的是另一個 SQL Server。OPENDATASOURCE 不接受參數變數。
與 OPENROWSET 函數類似,OPENDATASOURCE 應該只引用那些不經常訪問的 OLE DB 資料源。對於訪問次數稍多的任何資料源,請為它們定義鏈結的伺服器。無論 OPENDATASOURCE 還是 OPENROWSET 都不能提供鏈結的伺服器定義的全部功能,例如,安全管理以及查詢目錄資訊的能力。每次調用 OPENDATASOURCE 時,都必須提供所有的連接資訊(包括密碼)。
示例
下面的示例訪問來自某個表的資料,該表在 SQL Server 的另一個實例中。
SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=ServerName;User ID=MyUID;Password=MyPass'
).Northwind.dbo.Categories
下面是個查詢的示例,它通過用於 Jet 的 OLE DB 提供程式查詢 Excel 試算表。
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions

請參見
分散式查詢
OPENROWSET
sp_addlinkedserver

參考來源:http://www.yesky.com/imagesnew/software/tsql/ts_oa-oz_2be1.htm

沒有留言:

張貼留言