包含訪問 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資料庫 這句是對映乙個...