SQL跨服查询

包含访问 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

 

 

exec sp_configure 'show advanced options',1
reconfigure

exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure


select top 10 b.* from
 openrowset( 'SQLOLEDB ', 'Server=szpc668g;Trusted_Connection=yes',SecIdDB.dbo.Upload) a
 , openrowset( 'SQLOLEDB ', 'Server=DMWkspaceDB91;Trusted_Connection=yes',DocumentData.dbo.Document) b

转载于:https://www.cnblogs.com/flysun0311/archive/2010/11/05/1869902.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server跨服务器查询是指在一个SQL Server数据库中执行查询操作来访问另外一个SQL Server数据库中的数据。这种查询可以在不同的物理服务器上的不同数据库之间进行。 实现跨服务器查询主要依赖于SQL Server的分布式查询功能。下面是实现跨服务器查询的步骤: 1. 配置服务器链路:首先需要在源服务器和目标服务器之间创建一个服务器链路。这可以通过使用sp_addlinkedserver系统存储过程在源服务器上创建一个目标服务器的链接来实现。链路名称和目标服务器的地址都需要被指定。 2. 配置远程登录:为了能够在源服务器和目标服务器之间进行通信,需要在目标服务器上配置远程登录。这可以通过使用sp_addlinkedsrvlogin系统存储过程来实现。 3. 编写查询语句:在源服务器上编写查询语句,使用四段名来引用目标服务器上的表。四段名由服务器名称、数据库名称、模式名称和表名称组成。 4. 执行查询:最后,在源服务器上执行查询语句。查询将会在源服务器上执行,并且通过服务器链路将查询结果传输到目标服务器上。 需要注意以下几点: - 执行跨服务器查询可能会影响性能,尤其是当涉及到大量数据传输时。 - 对于连接到其他数据库管理系统的SQL Server,可能需要使用其他函数和方法进行连接和查询。 - 需要在网络连接可靠性和安全性方面特别注意。 总之,SQL Server跨服务器查询允许我们在不同的SQL Server数据库之间获取数据,并且通过服务器链路实现数据传输和通信。这对于需要在多个数据库之间共享数据的业务场景非常有用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值