OpenRowSet('Microsoft.Jet.OLEDB.4.0', 'Excel 5.0; HDR=Yes; Database=F:book1.xls', sheet1$)相當於數據庫的一張表,可以從中讀取數據
下面詳述OpenRowSet的用法(摘自Transact-SQL 參考):
語法
OPENROWSET ( 'provider_name'
, { 'datasource' ; 'user_id' ; 'password'
| 'provider_string' }
, { [ catalog.] [ schema.] object
| 'query' }
)
'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 對象及其強制接口,那麼在遠程服務器上就支持直接傳遞查詢。 如果 OLE DB 提供程序在指定的數據源中支持多個目錄和架構,那麼就需要目錄及架構名稱。如果 OLE DB 提供程序並不支持目錄和架構,那麼可以省略 catalog 及 schema 的值。 如果提供程序只支持架構名,那麼必須指定一個兩部分名稱,形式爲 schema.object。如果提供程序只支持目錄名,那麼必須指定一個三部分名稱,形式爲 catalog.schema.object。 OPENROWSET 不接受參數變量。 OPENROWSET 權限由傳遞到 OLE DB 提供程序的用戶名的權限確定。 下面的示例使用用於 SQL Server 的 Microsoft OLE DB 提供程序訪問 pubs 數據庫中的 authors 表,該數據庫在一個名爲 seattle1 的遠程服務器上。從 datasource、user_id及 password 中初始化提供程序,並且使用 SELECT 語句定義返回的行集。 下面的示例使用用於 ODBC 的 OLE DB 提供程序以及 SQL Server ODBC 驅動程序訪問 pubs 數據庫中的 authors 表,該數據庫在一個名爲 seattle1 的遠程服務器中。提供程序用在 ODBC 提供程序所用的 ODBC 語法中指定的 provider_string 進行初始化,定義返回的行集時使用 catalog.schema.object 語法。 下面的示例通過用於 Jet 的 Microsoft OLE DB 提供程序訪問 Microsoft Access Northwind 數據庫中的 orders 表。 說明 下面的示例假定已經安裝了 Access。 下面的示例從本地 SQL Server Northwind 數據庫的 customers 表中,以及存儲在相同計算機上 Access Northwind 數據庫的 orders 表中選擇所有數據 說明 下面的示例假定已經安裝了 Access。 參數
註釋
權限
示例
A. 將 OPENROWSET 與 SELECT 語句及用於 SQL Server 的 Microsoft OLE DB 提供程序一起使用
USE pubs
GO
SELECT a.*
FROM OPENROWSET('SQLOLEDB','seattle1';'sa';'MyPass',
'SELECT * FROM pubs.dbo.authors ORDER BY au_lname, au_fname') AS a
GO
B. 將 OPENROWSET 與對象及用於 ODBC 的 OLE DB 提供程序一起使用
USE pubs
GO
SELECT a.*
FROM OPENROWSET('MSDASQL',
'DRIVER={SQL Server};SERVER=seattle1;UID=sa;PWD=MyPass',
pubs.dbo.authors) AS a
ORDER BY a.au_lname, a.au_fname
GO
C. 使用用於 Jet 的 Microsoft OLE DB 提供程序
USE pubs
GO
SELECT a.*
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'mypwd', Orders)
AS a
GO
D. 使用 OPENROWSET 和 INNER JOIN 中的另一個表
USE pubs
GO
SELECT 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