SQLServer 跨庫(kù)查詢實(shí)現(xiàn)方法
更新時(shí)間:2012年04月01日 00:33:46 作者:
不使用鏈接的服務(wù)器名,而提供特殊的連接信息,并將其作為四部分對(duì)象名的一部分
本文給出一條 SQL 語(yǔ)句用于展示在同一名服務(wù)器上,不同的數(shù)據(jù)庫(kù)間查詢,注意當(dāng)前連接用戶要對(duì)兩個(gè)庫(kù)都有權(quán)限
SQL Server 中 SQL 語(yǔ)句中對(duì)象的完整表達(dá)式是:
[DatabaseServer].[DatabaseName].[DatabaseSchema].[DatabaseObject]
本文給出一條 SQL 語(yǔ)句用于展示在同一名服務(wù)器上,不同的數(shù)據(jù)庫(kù)間查詢,注意當(dāng)前連接用戶要對(duì)兩個(gè)庫(kù)都有權(quán)限。
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 中測(cè)試成功。
下面是一些補(bǔ)充資料
不使用鏈接的服務(wù)器名,而提供特殊的連接信息,并將其作為四部分對(duì)象名的一部分。
語(yǔ)法
OPENDATASOURCE ( provider_name, init_string )
參數(shù)
provider_name
注冊(cè)為用于訪問(wèn)數(shù)據(jù)源的 OLE DB 提供程序的 PROGID 的名稱(chēng)。provider_name 的數(shù)據(jù)類(lèi)型為 char,沒(méi)有默認(rèn)值。
init_string
連接字符串,這些字符串將要傳遞給目標(biāo)提供程序的 IDataInitialize 接口。提供程序字符串語(yǔ)法是以關(guān)鍵字值對(duì)為基礎(chǔ)的,這些關(guān)鍵字值對(duì)由分號(hào)隔開(kāi),例如:"keyword1=value; keyword2=value."
在 Microsoft® Data Access SDK 中定義了基本語(yǔ)法。有關(guān)所支持的特定關(guān)鍵字值對(duì)的信息,請(qǐng)參見(jiàn)提供程序中的文檔。下表列出 init_string 參數(shù)中最常用的關(guān)鍵字。
注釋
OPENDATASOURCE 函數(shù)可以在能夠使用鏈接服務(wù)器名的相同 Transact-SQL 語(yǔ)法位置中使用。因此,就可以將 OPENDATASOURCE 用作四部分名稱(chēng)的第一部分,該名稱(chēng)指的是 SELECT、INSERT、UPDATE 或 DELETE 語(yǔ)句中的表或視圖的名稱(chēng);或者指的是 EXECUTE 語(yǔ)句中的遠(yuǎn)程存儲(chǔ)過(guò)程。當(dāng)執(zhí)行遠(yuǎn)程存儲(chǔ)過(guò)程時(shí),OPENDATASOURCE 應(yīng)該指的是另一個(gè) SQL Server。OPENDATASOURCE 不接受參數(shù)變量。
與 OPENROWSET 函數(shù)類(lèi)似,OPENDATASOURCE 應(yīng)該只引用那些不經(jīng)常訪問(wèn)的 OLE DB 數(shù)據(jù)源。對(duì)于訪問(wèn)次數(shù)稍多的任何數(shù)據(jù)源,請(qǐng)為它們定義鏈接的服務(wù)器。無(wú)論 OPENDATASOURCE 還是 OPENROWSET 都不能提供鏈接的服務(wù)器定義的全部功能,例如,安全管理以及查詢目錄信息的能力。每次調(diào)用 OPENDATASOURCE 時(shí),都必須提供所有的連接信息(包括密碼)。
示例
下面的示例訪問(wèn)來(lái)自某個(gè)表的數(shù)據(jù),該表在 SQL Server 的另一個(gè)實(shí)例中。
SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=ServerName;User ID=MyUID;Password=MyPass'
).Northwind.dbo.Categories
下面是個(gè)查詢的示例,它通過(guò)用于 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 Server 中 SQL 語(yǔ)句中對(duì)象的完整表達(dá)式是:
[DatabaseServer].[DatabaseName].[DatabaseSchema].[DatabaseObject]
本文給出一條 SQL 語(yǔ)句用于展示在同一名服務(wù)器上,不同的數(shù)據(jù)庫(kù)間查詢,注意當(dāng)前連接用戶要對(duì)兩個(gè)庫(kù)都有權(quán)限。
復(fù)制代碼 代碼如下:
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 中測(cè)試成功。
下面是一些補(bǔ)充資料
不使用鏈接的服務(wù)器名,而提供特殊的連接信息,并將其作為四部分對(duì)象名的一部分。
語(yǔ)法
OPENDATASOURCE ( provider_name, init_string )
參數(shù)
provider_name
注冊(cè)為用于訪問(wèn)數(shù)據(jù)源的 OLE DB 提供程序的 PROGID 的名稱(chēng)。provider_name 的數(shù)據(jù)類(lèi)型為 char,沒(méi)有默認(rèn)值。
init_string
連接字符串,這些字符串將要傳遞給目標(biāo)提供程序的 IDataInitialize 接口。提供程序字符串語(yǔ)法是以關(guān)鍵字值對(duì)為基礎(chǔ)的,這些關(guān)鍵字值對(duì)由分號(hào)隔開(kāi),例如:"keyword1=value; keyword2=value."
在 Microsoft® Data Access SDK 中定義了基本語(yǔ)法。有關(guān)所支持的特定關(guān)鍵字值對(duì)的信息,請(qǐng)參見(jiàn)提供程序中的文檔。下表列出 init_string 參數(shù)中最常用的關(guān)鍵字。
關(guān)鍵字 | OLE DB 屬性 | 有效值和描述 |
---|---|---|
數(shù)據(jù)源 | DBPROP_INIT_DATASOURCE | 要連接的數(shù)據(jù)源的名稱(chēng)。不同的提供程序用不同的方法對(duì)此進(jìn)行解釋。對(duì)于 SQL Server OLE DB 提供程序來(lái)說(shuō),這會(huì)指明服務(wù)器的名稱(chēng)。對(duì)于 Jet OLE DB 提供程序來(lái)說(shuō),這會(huì)指明 .mdb 文件或 .xls 文件的完整路徑。 |
位置 | DBPROP_INIT_LOCATION | 要連接的數(shù)據(jù)庫(kù)的位置。 |
擴(kuò)展屬性 | DBPROP_INIT_PROVIDERSTRING | 提供程序特定的連接字符串。 |
連接超時(shí) | DBPROP_INIT_TIMEOUT | 超時(shí)值,在該超時(shí)值后,連接嘗試將失敗。 |
用戶 ID | DBPROP_AUTH_USERID | 用于該連接的用戶 ID。 |
密碼 | DBPROP_AUTH_PASSWORD | 用于該連接的密碼。 |
目錄 | DBPROP_INIT_CATALOG | 連接到數(shù)據(jù)源時(shí)的初始或默認(rèn)的目錄名稱(chēng)。 |
注釋
OPENDATASOURCE 函數(shù)可以在能夠使用鏈接服務(wù)器名的相同 Transact-SQL 語(yǔ)法位置中使用。因此,就可以將 OPENDATASOURCE 用作四部分名稱(chēng)的第一部分,該名稱(chēng)指的是 SELECT、INSERT、UPDATE 或 DELETE 語(yǔ)句中的表或視圖的名稱(chēng);或者指的是 EXECUTE 語(yǔ)句中的遠(yuǎn)程存儲(chǔ)過(guò)程。當(dāng)執(zhí)行遠(yuǎn)程存儲(chǔ)過(guò)程時(shí),OPENDATASOURCE 應(yīng)該指的是另一個(gè) SQL Server。OPENDATASOURCE 不接受參數(shù)變量。
與 OPENROWSET 函數(shù)類(lèi)似,OPENDATASOURCE 應(yīng)該只引用那些不經(jīng)常訪問(wèn)的 OLE DB 數(shù)據(jù)源。對(duì)于訪問(wèn)次數(shù)稍多的任何數(shù)據(jù)源,請(qǐng)為它們定義鏈接的服務(wù)器。無(wú)論 OPENDATASOURCE 還是 OPENROWSET 都不能提供鏈接的服務(wù)器定義的全部功能,例如,安全管理以及查詢目錄信息的能力。每次調(diào)用 OPENDATASOURCE 時(shí),都必須提供所有的連接信息(包括密碼)。
示例
下面的示例訪問(wèn)來(lái)自某個(gè)表的數(shù)據(jù),該表在 SQL Server 的另一個(gè)實(shí)例中。
復(fù)制代碼 代碼如下:
SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=ServerName;User ID=MyUID;Password=MyPass'
).Northwind.dbo.Categories
下面是個(gè)查詢的示例,它通過(guò)用于 Jet 的 OLE DB 提供程序查詢 Excel 電子表格。
復(fù)制代碼 代碼如下:
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
相關(guān)文章
sqlserver復(fù)制數(shù)據(jù)庫(kù)的方法步驟(圖文)
這篇文章主要介紹了sqlserver復(fù)制數(shù)據(jù)庫(kù)的方法步驟(圖文),文中通過(guò)圖文示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04SQL?Server2019安裝后出現(xiàn)連接失敗的解決方法
在開(kāi)發(fā)中我們經(jīng)常會(huì)用到SQL?Server,下面這篇文章主要給大家介紹了關(guān)于SQL?Server2019安裝后出現(xiàn)連接失敗的解決方法,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12SqlServer?多種分頁(yè)方式?詳解(含簡(jiǎn)單速度測(cè)試)
這篇文章主要介紹了SqlServer?多種分頁(yè)方式?(含簡(jiǎn)單速度測(cè)試),附帶50萬(wàn)數(shù)據(jù)分頁(yè)時(shí)間[本機(jī)訪問(wèn)|已重啟SQL服務(wù)|無(wú)其他程序干擾][非索引排序],需要的朋友可以參考下2022-12-12SQL Server 數(shù)據(jù)庫(kù)管理常用的SQL和T-SQL語(yǔ)句
SQL Server 數(shù)據(jù)庫(kù)管理常用的SQL和T-SQL語(yǔ)句...2007-03-03在SQL Server數(shù)據(jù)庫(kù)中為標(biāo)識(shí)(IDENTITY)列插入顯式值
SQL Server中的標(biāo)識(shí)列和ACCESS中的“自動(dòng)編號(hào)”相似,都是插入記錄的時(shí)候自動(dòng)生成,一般不允許也不需要我們?nèi)ナ謩?dòng)修改它2007-02-02sqlserver主鍵設(shè)計(jì)的注意點(diǎn)
在數(shù)據(jù)庫(kù)設(shè)計(jì)中,主鍵用于惟一地標(biāo)識(shí)表中的某一條記錄2012-07-07