Sql跨庫查詢

2022-02-24 18:21:52 字數 1958 閱讀 3897

不使用鏈結的伺服器名,而提供特殊的連線資訊,並將其作為四部分物件名的一部分。

語法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

sql跨庫查詢

方式一 使用連線伺服器 sp addlinkedserver mylink sqloledb local sp addlinkedsrvlogin mylink false null,sa sa select from mylink test.dbo.student 或者在 物件資源管理器 伺服器物...

資料庫跨庫查詢SQL

資料庫跨庫查詢sql select from opendatasource sqloledb data source user id password jshh.dbo.rs employee where code 0110 資料庫跨庫查詢功能開啟sp configure sp configure ...

SQL跨資料庫查詢

語句 select from 資料庫a.dbo.表a a,資料庫b.dbo.表b b wherea.field b.field dbo 可以省略 如 select from 資料庫a.表a a,資料庫b.表b bwhere a.field b.field sqlserver資料庫 這句是對映乙個遠端...