跨資料庫引擎 資料庫查詢

2021-04-09 08:54:55 字數 3347 閱讀 7765

包含訪問 ole db 資料來源中的遠端資料所需的全部連線資訊。當訪問鏈結伺服器中的表時,這種方法是一種替代方法,並且是一種使用 ole db 連線並訪問遠端資料的一次性的、特殊的方法。可以在查詢的 from 子句中像引用表名那樣引用 openrowset 函式。依據 ole db 提供程式的能力,還可以將 openrowset 函式引用為 insert、update 或 delete 語句的目標表。儘管查詢可能返回多個結果集,然而 openrowset 只返回第乙個。

語法openrowset ( '

provider_name',

, ) 引數

'provider_name'

字串,它代表在登錄檔中指定的 ole db 提供程式的友好名。provider_name 沒有預設值。

'datasource'

字串常量,它對應著某個特定的 ole db 資料來源。datasource 是將被傳遞到提供程式 idbproperties 介面以初始化提供程式的 dbprop_init_datasource 屬性。通常,這個字串包含資料庫檔案的名稱、資料庫伺服器的名稱,或者提供程式能理解的用於查詢資料庫的名稱。

'user_id'

字串常量,它是傳遞到指定 ole db 提供程式的使用者名稱。user_id 為連線指定安全上下文,並將它作為 dbprop_auth_userid 屬性傳遞進來以初始化提供程式。

'password'

字串常量,它是將被傳遞到 ole db 提供程式的使用者密碼。當初始化提供程式時,將 password 作為 dbprop_auth_password 屬性傳遞進來。

'provider_string'

提供程式特定的連線字串,將它作為 dbprop_init_providerstring 屬性傳遞進來以初始化 ole db 提供程式。通常 provider_string 封裝初始化提供程式所需的所有連線資訊。

catalog

目錄或資料庫的名稱,其中駐留著指定的物件。

schema

架構的名稱或指定物件的物件所有者名稱。

object

物件名稱,它唯一地標識出將要操作的物件。

'query'

是字串常量,傳送到提供程式並由提供程式執行。microsoft® sql server™ 不處理該查詢,但處理由提供程式返回的查詢結果(直接傳遞查詢)。對於有些提供程式,它們並沒有通過表名而是通過命令語言表現自己的**格式資料,那麼將直接傳遞查詢用於這些提供程式是非常有用的。只要查詢提供程式支援 ole db command 物件及其強制介面,那麼在遠端伺服器上就支援直接傳遞查詢。有關更多資訊,請參見 sql server ole db 程式設計師參考。

注釋如果 ole db 提供程式在指定的資料來源中支援多個目錄和架構,那麼就需要目錄及架構名稱。如果 ole db 提供程式並不支援目錄和架構,那麼可以省略 catalog 及 schema 的值。

如果提供程式只支援架構名,那麼必須指定乙個兩部分名稱,形式為 schema

.object。如果提供程式只支援目錄名,那麼必須指定乙個三部分名稱,形式為 catalog

.schema

.object。

openrowset 不接受引數變數。

許可權openrowset 許可權由傳遞到 ole db 提供程式的使用者名稱的許可權確定。

示例a. 將 openrowset 與 select 語句及用於 sql server 的 microsoft ole db 提供程式一起使用

下面的示例使用用於 sql server 的 microsoft ole db 提供程式訪問 pubs 資料庫中的 authors 表,該資料庫在乙個名為 seattle1 的遠端伺服器上。從 datasource、user_id 及 password 中初始化提供程式,並且使用 select 語句定義返回的行集。

use pubs

goselect a.*

from openrowset('sqloledb','seattle1';'sa';'mypass',

'select * from pubs.dbo.authors order by au_lname, au_fname') as a

gob. 將 openrowset 與物件及用於 odbc 的 ole db 提供程式一起使用

下面的示例使用用於 odbc 的 ole db 提供程式以及 sql server odbc 驅動程式訪問 pubs 資料庫中的 authors 表,該資料庫在乙個名為 seattle1 的遠端伺服器中。提供程式用在 odbc 提供程式所用的 odbc 語法中指定的 provider_string 進行初始化,定義返回的行集時使用 catalog.schema.object 語法。

use pubs

goselect a.*

from openrowset('msdasql'

, 'driver=;server=seattle1;uid=sa;pwd=mypass',

pubs.dbo.authors) as a

order by a.au_lname, a.au_fname

go注意:要在連線管理器裡面建立 msdasql

sql server :嚴格區分大小寫

c. 使用用於 jet 的 microsoft ole db 提供程式

下面的示例通過用於 jet 的 microsoft ole db 提供程式訪問 microsoft access northwind 資料庫中的 orders 表。

說明  下面的示例假定已經安裝了 access。

use pubs

goselect a.*

from openrowset('microsoft.jet.oledb.4.0',

'c:/msoffice/access/samples/northwind.mdb';'admin';'mypwd', orders)

as a

god. 使用 openrowset 和 inner join 中的另乙個表

下面的示例從本地 sql server northwind 資料庫的 customers 表中,以及儲存在相同計算機上 access northwind 資料庫的 orders 表中選擇所有資料

說明  下面的示例假定已經安裝了 access。

use pubs

goselect c.*, o.*

from northwind.dbo.customers as c inner join

openrowset('microsoft.jet.oledb.4.0',

'c:/msoffice/access/samples/northwind.mdb';'admin';'mypwd', orders)

as o

on c.customerid = o.customerid go 

跨資料庫查詢資料

今天要導資料,不幸的是要一台伺服器導到另一台伺服器上,於是乎就到上網查了一下怎麼進行跨伺服器資料庫查詢 方法一 1select from opendatasource 2 sqloledb 3 data source 遠端ip user id sa password 密碼 4 庫名.dbo.表名 於...

資料庫跨庫查詢SQL

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

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 sqlserver資料庫 這句是對映乙個...