SQL的OPENROWSET开启和使用方法

摘要:
OPENROWSET包含访问OLEDB数据源中的远程数据所需的所有连接信息。OPENROWSET函数可以作为表名在查询的FROM子句中引用。根据OLEDB提供程序的功能,OPENROWSET函数也可以被引用为INSERT、UPDATE或DELETE语句的目标表。虽然查询可能返回多个结果集,但OPENROWSET只返回第一个结果集。OPENROWSET不接受参数变量。权限OPENROWSET权限由传递给OLEDB提供程序的用户名的权限决定。

[转载]SQL的OPENROWSET开启和使用方法

 

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:delphiTestDatabase.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:MSOfficeAccessSamples orthwind.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:MSOfficeAccessSamples orthwind.mdb';'admin';'mypwd', Orders) 

   AS o

   ON c.CustomerID = o.CustomerID 

GO

免责声明:文章转载自《SQL的OPENROWSET开启和使用方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇RedHat 安装YUM软件WSL2+PhpStorm+xdebug环境下端口连接不通下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SQL Server2008数据库如何改名

未使用的数据库改名比较方便,找到你要更改的数据库,右键选择【重命名】。 2 然后将你想要更改的名字写好,然后点击一下旁边的空白栏。 3 然后你就发现数据库的名称已经改好了。 END 使用中的数据库     使用中的数据库你在使用这种方法显然是不合适,你用这种方法更改数据库的名字之后会提示你无法重命名数据库。   这时还是...

Jmeter JDBC连接

1.jmeter连接数据库,首先在测试计划下面添加数据库对应的连接驱动 2.之后创建线程组,在新建的线程组下创建 JDBC Connection Configuration 3.配置JDBC Connection Configuration信息 JDBC的配置解析   1)ORACLE       URL链接: jdbc:oracle:thin:@ho...

PbootCMS网站无缝转PBMOD

下载文件(群文件也可下载):       只适用于PbootCMS-V3.1.2转为PBMOD-V1.0.9.beta2,数据库必须是MySql   使用说明: 1、先备份原网站的程序和数据库,这是最基本的。 2、将PBOMD程序源码全部覆盖原网站。注意:保留原网站的模板文件夹! 3、修改数据库配置文件,configdatabase.php,填写原来的数...

使用 PowerShell 将数据磁盘附加到 Windows VM

本文介绍如何使用 PowerShell 将新磁盘和现有磁盘附加到 Windows 虚拟机。 在开始之前,请查看以下提示: 虚拟机的大小决定了可以附加多少个磁盘。 有关详细信息,请参阅虚拟机大小。 若要使用高级存储,需要支持高级存储的 VM 大小,如 DS 系列或 GS 系列虚拟机。 有关详细信息,请参阅高级存储:适用于 Azure 虚拟机工作负荷的高性能...

三, 用户管理 一

用户概念 一、sys用户和system用户 Oracle安装会自动的生成sys用户和system用户 (1)、sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户默认的密码是change_on_install (2)、system用户是管理操作员,权限也很大。具有sysoper角色,没有create...

7 款顶级的开源 Web 分析软件

Web 分析无非就是 Web 流量的测量。但它并不限于测量网络流量,还包括: 分析 数据采集 为了了解和优化网页而上报网络数据 Google Analytics是最广泛使用的基于云的网络分析服务。不过,你的数据已被锁定在Google的生态系统中。如果你想要100%的数据拥有权,请尝试以下开源网络分析软件来获取有关网站的访问者数量和页面浏览量的信息。...