Menu
Woocommerce Menu

SQL Server 允许进行即席访问

0 Comment

SQL Server 不许利用 OPENROWSET 和 OPENDATASOURCE
实行即席布满式查询。此选项设置

不行使链接服务器的称谓,而提供新鲜的连年音讯,并将其看成四部分指标名的一有些。

为 1 时,SQL Server 允许举办即席采访。如果此选项未设置或设置为 0,则 SQL
Server

图片 1 Transact-SQL
语法约定

不容许举办即席访谈。

图片 2  语法

即席布满式查询利用 OPENROWSET 和 OPENDATASOURCE 函数连选拔使用 OLE DB
的远程数据

OPENDATASOURCE ( provider_name, init_string )

源。OPENROWSET 和 OPENDATASOURCE 只应在引用有时访谈的 OLE DB
数据源时使用。对于将

图片 3  参数

要日常访谈的数据源,应定义链接服务器。

provider_name
挂号为用于访谈数据源的 OLE DB 访谈接口的 PROGID 的称呼。provider_name
的数据类型为 char,无暗许值。

平安证明: 允许利用有的时候名称意味着到 SQL Server
的其余经过身份验证的登入名均可访谈该访谈接口

。SQL Server
管理员应对任啥地点方登陆名都能无法极阳回访问的拜见接口启用此意义。有关详细信

init_string
连续字符串,该字符串就要传递给目的提供程序的 IDataInitialize
接口。提供程序字符串语法是以第一字值对为底子的,这一个重大字值对由支行隔开分离,例如:“keyword1=value**;*keyword2=value*”。

息,请参阅访问外界数据中的 DisallowAdhocAccess 选项。

若要精通提供程序上支持的特定关键字值对,请参阅 Microsoft Data Access
SDK。该文书档案定义了基本语法。下表列出了 init_string
参数中最常用的主要性字。

演示下边包车型地铁示范启用即席布满式查询,然后使用 OPENROWSET 函数查询名称为Seattle1 的服务器

关键字 OLE DB 属性 有效值和说明

数据源

DBPROP_INIT_DATASOURCE

要连接的数据源的名称。不同的提供程序用不同的方法对此进行解释。对于 SQL Server Native Client OLE DB 访问接口,这指示服务器的名称。对于 Jet OLE DB 访问接口来说,这指示 .mdb 文件或 .xls 文件的完整路径。

位置

DBPROP_INIT_LOCATION

要连接的数据库的位置。

扩展属性

DBPROP_INIT_PROVIDERSTRING

提供程序特定的连接字符串。

连接超时

DBPROP_INIT_TIMEOUT

达到该超时值后,连接尝试将失败。

用户 ID

DBPROP_AUTH_USERID

用于该连接的用户 ID。

密码

DBPROP_AUTH_PASSWORD

用于该连接的密码。

目录

DBPROP_INIT_CATALOG

连接到数据源时的初始或默认的目录名称。

集成安全性

DBPROP_AUTH_INTEGRATED

SSPI,指定 Windows 身份验证

复制代码 sp_configure ‘show advanced options’,
1;RECONFIGURE;sp_configure ‘Ad Hoc Distributed Queries’,
1;RECONFIGURE;GO

SELECT a.*FROM OPENROWSET(‘SQLNCLI’,
‘Server=Seattle1;Trusted_Connection=yes;’,’SELECT GroupName, Name,
DepartmentIDFROM AdventureWorks2008R2.HumanResources.DepartmentORDER
BY GroupName, Name’) AS a;GO

图片 4  注释

在 Microsoft SQL Server 二零零四 中,分布式查询允许 SQL Server 顾客访谈基于
SQL

仅当 DisallowAdhocAccess 注册表选项针对钦命的提供程序显式设置为
0,况兼启用 Ad Hoc Distributed Queries
高端配置选项时,OPENDATASOURCE 才可用以访问 OLE DB
数据源中的远程数据。即使未设置这个选取,则暗许行为不容许即席访问。

Server 的服务器以外的多少。OLE DB
提供了统一的措施来会见异类数据源中的列表数据。
在本文中,分布式查询是指别的援引了一个或多少个外表 OLE DB
数据源中表或行集的

OPENDATASOURCE 函数能够在能够运用链接服务器名的均等 Transact-SQL
语法地点中使用。由此,能够将 OPENDATASOURCE
用作四部分名称的第一有个别,该片段名称引用 SELECT、INSERT、UPDATE 或
DELETE 语句中的表或视图的称呼;恐怕援用 EXECUTE
语句中的远程存款和储蓄进程。当实施远程存款和储蓄进程时,OPENDATASOURCE 应该援用 SQL
Server 的另三个实例。OPENDATASOURCE 不接受参数变量。

SELECT、INSERT、UPDATE 或 DELETE 语句。 远程表是指积攒于 OLE DB
数据源中况兼不在实施查询的 SQL Server 所在服务器上的

与 OPENROWSET 函数相同,OPENDATASOURCE 应该只援用那么些有时访谈的 OLE DB
数据源。对于访谈次数较频仍的其余数据源,请为它们定义链接服务器。不论OPENDATASOURCE 仍旧 OPENROWSET
都无法提供链接服务器定义的整体功力,举例,安全管理以致查询目录消息的作用。每回调用
OPENDATASOURCE 时,都必须要提供全数的总是音讯(包涵密码)。

表。一个分布式查询能够访谈三个或多少个远程表。 OLE DB 提供程序连串 依照OLE DB 提供程序在 SQL Server 的布满式查询中的成效,大家将它们划分为如下

重要提示:
Windows 身份验证比 SQL Server 身份验证要安全得多。应尽量使用 Windows 身份验证。OPENDATASOURCE 不应该用于连接字符串中的显式密码。

品类。依据定义,它们并不是相互排挤;某种提供程序或许归属二个或五个连串:
SQL 命令提供程序 索引提供程序 轻便表提供程序 非 SQL 命令提供程序 SQL
命令提供程序 凡是以 SQL 规范语法协理 Command 对象的提供程序,都归于此类

各类提供程序的连接必要与创制链接服务器时的参数供给平日。在
sp_addlinkedserver
(Transact-SQL)
宗旨中列出了过多科学普及提供程序的详细消息。

别。上边是 OLE DB 提供程序被 SQL Server 视为 SQL
命令提供程序的须要条件: 提供程序必需援救 Command 对象及其具备强迫 OLE
DB 接口:ICommand、ICommandText

图片 5  权限

、IColumnsInfo、ICommandProperties 和 IAccessor。 提供程序帮助的 SQL
语法必得起码是 SQL 子集。提供程序必需经过

其余客户都能够实行OPENDATASOURCE。用于连接到长途服务器的权柄由连接字符串明确。

DBPROP_SQLSUPPORT 属性来报告语法。 SQL 命令提供程序的示范为:Microsoft
OLE DB Provider for SQL Server 和

图片 6  示例

Microsoft OLE DB Provider for ODBC。 索引提供程序
索引提供程序辅助并提供与 OLE DB
对应的目录,同时还允许基于索引对基本表试行查

以下示例将开创与劳动器 London 上的 SQL Server 实例 Payroll
的即席连接,并查询 AdventureWorks.HumanResources.Employee 表。(使用
SQLNCLI 况且 SQL Server 将重定向到 SQL Server Native Client OLE DB
访谈接口的摩登版本。)

找。上面是 OLE DB 提供程序被 SQL Server 视为索引提供程序的必要条件:
提供程序必得以 TABLES、COLUMNS 和 INDEXES 构造行集扶助 IDBSchemaRowset
接口。 提供程序必需援救通过 IOpenRowset 打开索引中的行集。 Index
对象必需扶持其全体的强迫接口:IRowset、IRowsetIndex、IAccessor、

SELECT *
FROM OPENDATASOURCE('SQLNCLI',
    'Data Source=London\Payroll;Integrated Security=SSPI')
    .AdventureWorks.HumanResources.Employee

IColumnsInfo、IRowsetInfo 和 IConvertTypes。
对带索引基本表展开的行集必需帮忙 IRowsetLocate 接口,

以下示例以 1998 – 二零零三 格式创设与 Excel 电子手表格的即席连接。

以便依照书签在行上定位。 如若壹个 OLE DB
提供程序满意以上条件,客商能够设置提供程序选项 Index As

SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\DataFolder\Documents\TestExcel.xls;Extended Properties=EXCEL 5.0')...[Sheet1$] ;

Access Path,以允许 SQL Server
使用提供程序的目录来实践查询。私下认可景况下,除非该选

图片 7  请参阅

项已被设置,不然 SQL Server 不会尝试利用提供程序的目录。 注意: SQL
Server 扶植五个影响 SQL Server 访问 OLE DB 提供程序的方式的选择

参考

OPENROWSET
(Transact-SQL)
sp_addlinkedserver
(Transact-SQL)

。能够利用 SQL Server 公司微处理器中的链接服务器质量对话框来安装这个接受。
轻松表提供程序 轻松表提供程序通过 IOpenRowset
接口来表现遵照基本表张开发银行集的法子。那么些提供程

此外财富

遍及式查询
利用有的时候名称标记数据源

序既不是 SQL 命令提供程序亦不是索引提供程序;而是 SQL Server
遍及式查询所能管理的

提供程序中最轻便易行的一类。 对于此类提供程序,SQL Server
仅能在遍及式查询运维进程履行表扫描操作。 非 SQL 命令提供程序
该类提供程序支持 Command 对象及其具有强迫接口,但不支持 SQL Server
承认的 SQL

正式语法。 非 SQL 命令提供程序的四个示范是:Microsoft OLE DB Provider
for Indexing

Service 和 Microsoft Windows NT? Active Directory? Service Interfaces
(ADSI) OLE

DB Provider。 Transact-SQL 子集 即使提供程序辅助所需的 OLE DB 接口,下列
Transact-SQL 语句体系都得以用来布满

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图