SQL的OPENROWSET开启和使用方法
http://www.cnblogs.com/skylaugh/p/6119345.html
1、開始?—>?
所有程序??—>?
Microsoft?SQL?Server?2005??—>?
配置工具??—>?
SQL?Server外圍應用配置器??—>?
功能的外圍應用配置器??—>?
實例名??—>?
Database?Engine??—>?
即席遠程查詢??—>?
啟用OpenRowset和OpenDatasource支持。?
?
?
?
2.代碼啟用
???啟用:
exec?sp_configure?'show?advanced?options',1
reconfigure
exec?sp_configure?'Ad?Hoc?Distributed?Queries',1
reconfigure
????關閉:
exec?sp_configure?'Ad?Hoc?Distributed?Queries',0
reconfigure
exec?sp_configure?'show?advanced?options',0
reconfigure?
?
在不啟用OpenRowset/OpenDatasource時使用如下語句:
INSERT?INTO?User_0502_tbl?(BGQX?)??SELECT?ArID?FROM?OPENDATASOURCE?('Microsoft.Jet.OLEDB.4.0','Data?source=''D:\delphi\Test\Database.mdb'';User?ID=Admin;Password=')...AFiles_tbl??這個語句是從access導入數據到SQL2005數據表
你將看到“
??????SQL?Server?阻止了對組件?'Ad?Hoc?Distributed?Queries'?的?STATEMENT'OpenRowset/OpenDatasource'?的訪問,因為此組件已作為此服務器安全配置的一部分而被關閉。系統管理員可以通過使用?sp_configure?啟用?'Ad?Hoc?Distributed?Queries'。有關啟用?'Ad?Hoc?Distributed?Queries'?的詳細信息,請參閱?SQL?Server?聯機叢書中的?"外圍應用配置器"??”錯誤提升信息。?
?
?
?
?
OPENROWSET
?
包含訪問?OLE?DB?數據源中的遠程數據所需的全部連接信息。當訪問鏈接服務器中的表時,這種方法是一種替代方法,并且是一種使用?OLE?DB?連接并訪問遠程數據的一次性的、特殊的方法??梢栽诓樵兊?FROM?子句中像引用表名那樣引用?OPENROWSET?函數。依據?OLE?DB?提供程序的能力,還可以將?OPENROWSET?函數引用為?INSERT、UPDATE?或?DELETE?語句的目標表。盡管查詢可能返回多個結果集,然而?OPENROWSET?只返回第一個。
?
?
語法
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?對象及其強制接口,那么在遠程服務器上就支持直接傳遞查詢。有關更多信息,請參見?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
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?提供程序一起使用
下面的示例使用用于?ODBC?的?OLE?DB?提供程序以及?SQL?Server?ODBC?驅動程序訪問?pubs?數據庫中的?authors?表,該數據庫在一個名為?seattle1?的遠程服務器中。提供程序用在?ODBC?提供程序所用的?ODBC?語法中指定的?provider_string?進行初始化,定義返回的行集時使用?catalog.schema.object?語法。
?
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?提供程序
下面的示例通過用于?Jet?的?Microsoft?OLE?DB?提供程序訪問?Microsoft?Access?Northwind?數據庫中的?orders?表。
?
?
?
說明??下面的示例假定已經安裝了?Access。
?
?
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?中的另一個表
下面的示例從本地?SQL?Server?Northwind?數據庫的?customers?表中,以及存儲在相同計算機上?Access?Northwind?數據庫的?orders?表中選擇所有數據
?
?
?
說明??下面的示例假定已經安裝了?Access。
?
?
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
轉載于:https://www.cnblogs.com/liuqiyun/p/7645443.html
總結
以上是生活随笔為你收集整理的SQL的OPENROWSET开启和使用方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快速幂(求A^B的最后三位数表示的整数(
- 下一篇: Spark SQL中 RDD 转换到 D