SQLServer 跨庫查詢實現方法

2022-02-09 04:12:50 字數 2479 閱讀 3292

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

本文給出一條 sql 語句用於展示在同一名伺服器上,不同的資料庫間查詢,注意當前連線使用者要對兩個庫都有許可權

sql server 中 sql 語句中物件的完整表示式是: 

[databaseserver].[databasename].[databaseschema].[databaseobject] 

本文給出一條 sql 語句用於展示在同一名伺服器上,不同的資料庫間查詢,注意當前連線使用者要對兩個庫都有許可權。 

複製****如下:

select * 

from cfteadb1.dbo.cfteatable1 inner join cfteadb2.dbo.cfteatable2 

on cfteadb1.dbo.cfteatable1.id=cfteadb2.dbo.cfteatable2.id 

以上在 sql server 2008 r2 的 management studio 中測試成功。

下面是一些補充資料

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

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

SQLServer跨庫查詢

用openrowset連線遠端sql或插入資料 如果只是臨時訪問,可以直接用openrowset 查詢示例 select from openrowset sqloledb sql伺服器名 使用者名稱 密碼 資料庫名.dbo.表名 在跨庫查詢時需要啟用ad hoc distributed querie...

SQL Server跨庫查詢

方式一 語句select from 資料庫a.dbo.表a a,資料庫b.dbo.表b b where a.field b.field dbo 可以省略 如 select from 資料庫a.表a a,資料庫b.表b b where a.field b.field 方式二 在乙個資料庫掛上另乙個資料...

sql server跨庫查詢

方式一 dbo可以省略 select from 資料庫a.dbo.表a a,資料庫b.dbo.表b b where a.field b.field 方式二 在乙個資料庫掛上另乙個資料庫的外鏈 對映乙個遠端資料庫 exec sp addlinkedserver 遠端資料庫的ip或主機名 n sql s...