標籤:des   blog   http   ar   io   os   使用   sp   for   
在使用sqlserver資料庫的OpenRowSet函數時,會遇到三種驅動方式:
1. MSDASQL驅動
SELECT TOP 10 * 
FROM OPENROWSET(‘MSDASQL‘, ‘DRIVER={SQL Server};SERVER=xxx;UID=xx;PWD=xxx;‘, ‘select * from AdventureWorks.HumanResources.Employee‘)
2. SQLNCLI驅動
SELECT TOP 10 * 
FROM OPENROWSET(‘SQLNCLI‘, ‘SERVER=xxx;UID=xx;PWD=xxxxx;‘, ‘select * from AdventureWorks.HumanResources.Employee‘)
3. SQLOLEDB驅動
SELECT TOP 10 * 
FROM OpenRowSet(‘SQLOLEDB‘, ‘xxx‘; ‘xx‘; ‘xxx‘, AdventureWorks.HumanResources.Employee)
先看一下定義
MSDASQL:Microsoft OLE DB Provider for ODBC Drivers
允許在 OLEDB 和 ADO(它在內部使用 OLEDB)上構建的應用程式通過 ODBC 驅動程式訪問資料來源的技術。 
MSDASQL 是用於串連到 ODBC(而不是資料庫)的 OLEDB 提供者。
SQLOLEDB :Microsoft OLE DB Provider for SQL Server,可以看出來SQLOLEDB是串連到資料庫sqlserver,而不是ODBC驅動
SQLNCLI10(SQLNCLI):SQL Server Native Client 10.0
SQL Server Native Client的定義:
SQL Server Native Client 是在 SQL Server 2005 中引入的用於 OLE DB 和 ODBC 的獨立資料訪問API (API)。SQL Server Native Client 將 SQL OLE DB 提供者和 SQL ODBC 驅動程式組合成一個本機動態連結程式庫 (DLL)。為了利用在 SQL Server 2005以及以上的版本的新功能,比如多個活動結果集 (MARS)、查詢通知、使用者定義型別 (UDT) 或新的 xml 資料類型,那些使用 ActiveX Data Objects (ADO) 的現有應用程式應當使用 SQL Server Native Client OLE DB 提供者作為其資料提供者。
如果不需要使用在 SQL Server 2005 及其以後的版本中引入的任何新功能,則不需要使用 SQL Server Native Client OLE DB 提供者;您可以繼續使用當前資料提供者(通常是 SQLOLEDB)。如果要增強現有應用程式的功能,並且需要使用在 SQL Server 2005 及其以後的版本中引入的新功能,則應當使用 SQL Server Native Client OLE DB 提供者。
附上 OPENROWSET 文法格式
OPENROWSET ( { ‘provider_name‘ , { ‘datasource‘ ; ‘user_id‘ ; ‘password‘    | ‘provider_string‘ }       , {   [ catalog. ] [ schema. ] object        | ‘query‘      }    | BULK ‘data_file‘ ,        { FORMATFILE = ‘format_file_path‘ [ <bulk_options> ]       | SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB }} ) <bulk_options> ::=   [ , CODEPAGE = { ‘ACP‘ | ‘OEM‘ | ‘RAW‘ | ‘code_page‘ } ]    [ , ERRORFILE = ‘file_name‘ ]   [ , FIRSTROW = first_row ]    [ , LASTROW = last_row ]    [ , MAXERRORS = maximum_errors ]    [ , ROWS_PER_BATCH = rows_per_batch ] 
[ , ORDER ( { column [ ASC | DESC ] } [ ,...n ] ) [ UNIQUE ] 
參照:http://www.cnblogs.com/w-y-f/archive/2012/05/07/2488474.html
sqlserver OpenRowSet 對應的三種資料庫驅動