OPENDATASOURCE (TransactSQL)

摘要:
Transact-SQL语法约定语法OPENDATASOURCE参数provider_Name注册为OLEDB提供程序的PROGID的名称,用于访问数据源。OPENDATASOURCE函数可以在可以使用链接服务器名称的同一Transact-SQL语法位置中使用。执行远程存储过程时,OPENDATASOURCE应引用SQL Server的另一个实例。OPENDATASOURCE不接受参数变量。OPENDATASOURCE和OPENROWSET都不能提供链接服务器定义的所有功能,例如安全管理和目录信息查询。OPENDATASOURCE不应用于连接字符串中的显式密码。在sp_addlinkedserver主题中,列出了许多常见提供者的详细信息。权限任何用户都可以执行OPENDATASOURCE。

不使用链接服务器的名称,而提供特殊的连接信息,并将其作为四部分对象名的一部分。

主题链接图标Transact-SQL 语法约定

OPENDATASOURCE (TransactSQL)第2张 语法
OPENDATASOURCE ( provider_name, init_string )
OPENDATASOURCE (TransactSQL)第2张 参数
provider_name

注册为用于访问数据源的 OLE DB 访问接口的 PROGID 的名称。provider_name 的数据类型为 char,无默认值。

init_string

连接字符串,该字符串将要传递给目标提供程序的 IDataInitialize 接口。提供程序字符串语法是以关键字值对为基础的,这些关键字值对由分号隔开,例如:“keyword1=value;keyword2=value”。

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

关键字 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 身份验证

OPENDATASOURCE (TransactSQL)第2张 注释

仅当 DisallowAdhocAccess 注册表选项针对指定的提供程序显式设置为 0,并且启用 Ad Hoc Distributed Queries 高级配置选项时,OPENDATASOURCE 才可用于访问 OLE DB 数据源中的远程数据。如果未设置这些选项,则默认行为不允许即席访问。

OPENDATASOURCE 函数可以在能够使用链接服务器名的相同 Transact-SQL 语法位置中使用。因此,可以将 OPENDATASOURCE 用作四部分名称的第一部分,该部分名称引用 SELECT、INSERT、UPDATE 或 DELETE 语句中的表或视图的名称;或者引用 EXECUTE 语句中的远程存储过程。当执行远程存储过程时,OPENDATASOURCE 应该引用 SQL Server 的另一个实例。OPENDATASOURCE 不接受参数变量。

与 OPENROWSET 函数类似,OPENDATASOURCE 应该只引用那些不经常访问的 OLE DB 数据源。对于访问次数较频繁的任何数据源,请为它们定义链接服务器。无论 OPENDATASOURCE 还是 OPENROWSET 都不能提供链接服务器定义的全部功能,例如,安全管理以及查询目录信息的功能。每次调用 OPENDATASOURCE 时,都必须提供所有的连接信息(包括密码)。

ms179856.note(zh-cn,SQL.100).gif重要提示:
Windows 身份验证比 SQL Server 身份验证要安全得多。应尽量使用 Windows 身份验证。OPENDATASOURCE 不应该用于连接字符串中的显式密码。

每个提供程序的连接要求与创建链接服务器时的参数要求相似。在 sp_addlinkedserver (Transact-SQL) 主题中列出了很多常见提供程序的详细信息。

OPENDATASOURCE (TransactSQL)第2张 权限

任何用户都可以执行 OPENDATASOURCE。用于连接到远程服务器的权限由连接字符串确定。

OPENDATASOURCE (TransactSQL)第2张 示例

以下示例将创建与服务器 London 上的 SQL Server 实例 Payroll 的即席连接,并查询 AdventureWorks.HumanResources.Employee 表。(使用 SQLNCLI 并且 SQL Server 将重定向到 SQL Server Native Client OLE DB 访问接口的最新版本。)

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

以下示例以 1997 - 2003 格式创建与 Excel 电子表格的即席连接。

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

免责声明:文章转载自《OPENDATASOURCE (TransactSQL)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇visual studio 2010 如何修改assemblyInfo.cs默认值Python三方库PyAutoGUI的使用方法下篇

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

相关文章

OPENQUERY (TransactSQL)

对给定的链接服务器执行指定的传递查询。该服务器是 OLE DB 数据源。OPENQUERY 可以在查询的 FROM 子句中引用,就好象它是一个表名。OPENQUERY 也可以作为 INSERT、UPDATE 或 DELETE 语句的目标表进行引用。但这要取决于 OLE DB 访问接口的功能。尽管查询可能返回多个结果集,但是 OPENQUERY 只返回第一个...

无法启动链接服务器"XXX DB Link"的 OLE DB 访问接口 "SQLNCLI11" 的嵌套事务。由于 XACT_ABORT 选项已设置为 OFF,因此必须使用嵌套事务。链接服务器"XXX DB Link"的 OLE DB 访问接口 "SQLNCLI11" 返回了消息"无法在此会话中启动更多的事务"。

无法启动链接服务器"XXX DB Link"的 OLE DB 访问接口 "SQLNCLI11" 的嵌套事务。由于 XACT_ABORT 选项已设置为 OFF,因此必须使用嵌套事务。链接服务器"XXX DB Link"的 OLE DB 访问接口 "SQLNCLI11" 返回了消息"无法在此会话中启动更多的事务"。 【以上问题待解决】 临时解决方案:暂时先避免...

[SQL SERVER] 跨服务器查询

[SQL SERVER] 跨服务器查询 方法一:用OPENDATASOURCE下面是个跨SQLServer查询的示例Select TableA.*,TableB.* From OPENDATASOURCE(         'SQLOLEDB',         'Data Source=ServerA;User ID=UserID;Password=P...

MSSQl分布式查询

MSSQlServer所谓的分布式查询(Distributed Query)是能够访问存放在同一部计算机或不同计算机上的SQL Server或不同种类的数据源, 从概念上来说分布式查询与普通查询区别 它需要连接多个MSSQL服务器也就是具有多了数据源.实现在服务器跨域或跨服务器访问. 而这些查询是否被使用完全看使用的需要. 本篇将演示利用SQlExpres...

SQL2008R2链接SQL2000:该访问接口支持该接口,但使用该接口时返回了失败代码

SQL2008R2x64链接SQL2000时,报如下错误: /* 链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "未指定的错误"。 链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "在该服务器上找不到完成该操作所需的存储过程。请与系统管理员联系。"。 消息 7311,级别...

将 Excel 数据导入 SQL Server数据库

原文:https://docs.microsoft.com/zh-cn/sql/relational-databases/import-export/import-data-from-excel-to-sql?view=sql-server-2017#bulk-insert 适用于:SQL Server(所有支持的版本)  将 Excel 文件中的数据...