首页 >> 大全

SQL SERVER 链接服务器 以及 openrowset

2023-10-01 大全 25 作者:考证青年

简单来说,通过链接服务器,让访问其它服务器,像跟访问自身数据库一样方便。

from [链接服务器][数据库].[所有者].Tabel

创建链接服务器 两种方式 T_SQL 和SSMS T_SQL

–建立连接服务器

EXEC ‘远程服务器IP’,‘SQL ’

–标注存储

EXEC

@ = ‘’, --链接服务器的本地名称。也允许使用实例名称,例如\SQL1

@ = ‘’, --OLE DB数据源的产品名。对于SQL 实例来说,是’SQL ’

@ = ‘’ ,–这是OLE DB访问接口的唯一可编程标识。当没有指定它时,访问接口名称是 SQL 数据源。SQL 显式的是 ( SQL OLE DB )。的是 , 8或更高版本的是.。MS 和MS Excel的是 .Jet.OLEDB.4.0。IBM DB2的是,以及ODBC数据源的是

@ = ‘’, --这是特定OLE DB访问接口解释的数据源。对于SQL ,这是 SQL (或\)的网络名称。对于,这是SQL*Net别名。对于 MS 和,这是文件的完整路径和名称。对于ODBC数据源,这是系统DSN名称

@ = ‘’ ,–由特定OLE DB访问接口解释的位置

@ = ‘’ ,–OLE DB 访问接口特定的连接字符串。对于ODBC连接,这是ODBC连接字符串。对于MS Excel,这是Excel 5.0

@ = ‘’ --的定义变化基于OLE DB访问接口的实现。对于SQL ,这是可选的数据库名称,对于DB2,这个目录是数据库的名称

–创建链接服务器上远程登录之间的映射

EXEC ‘远程服务器IP’,‘false’,‘sa’,‘架构名’,‘访问密码’

–标注存储

EXEC

@ = ‘远程服务器IP’, --要添加登录名映射的本地链接服务器

@ = false, --当使用true值时,使用本地SQL或登录名连接到远程服务器名。如果设为false,存储过程 的、和参数将应用到新的映射中

@ = NULL, --这是映射到远程登录名的SQL 登录或用户的名称。如果这个参数置为NULL,映射将应用SQL 实例中的所有本地登录名

@ = ‘架构名’, --用来连接到链接服务器的用户/登录名的名称

@ = ‘访问密码’ --用来连接到链接服务器的用户/登录名的密码

–查看链接服务器信息

name,,,,,on,led,

from sys. where =1

配置链接服务器属性

exec ‘别名’,‘name’,‘远程服务器IP’

–标注存储

EXEC

@ = ‘’ --配置属性的链接服务器的名称

,@ = ‘’ --要配置的选项

,@ = ‘’ --选项的新值

–附参数

参 数 描 述

如果你确认SQL 实例与远程SQL 拥有相同的排序规则就启用这个设置。由于SQL 不再需要对数据源之间的字符列执行比较操作,把它们假定为相同的排序规则,这样做可以提升性能

name 如果启用了use 并且是非SQL 的数据源,则 name指定远程服务器排序规则的名称。这个排序规则名称必须是SQL 所支持的

指定在超时发生之前到链接服务器的连接会尝试多少秒。如果数值为“0”,sp_ 的 query 的服务器值用来当作默认值

data 如果启用,就允许分布式查询访问

lazy 如果设为true,则架构不会在查询开始时去检测远程表。尽管这样会减少远程查询的负载,但是如果架构发生了变化并且你没有进行架构检测,比如说查询中引用的对象不能与查询命令进行通信,就会生成错误

query 指定查询等待的超时值(秒数)。如果这个值为0,则query wait选项使用值

rpc 启用从服务器进行远程过程调用

rpc out 启用远程过程调用到服务器

use 指定是使用远程服务器排序规则(true)还是本地服务器排序规则(false)

–删除链接服务器属性

_SQL SERVER 链接服务器 以及 openrowset_SQL SERVER 链接服务器 以及 openrowset

exec ‘4’

–标注存储

EXEC

@ = ‘’ --从SQL 实例中删除的链接服务器的名称

,@ = ‘’ --如果指定,则在删除链接服务器之前要删除登录名映射

–查看链接登录名

s.name ,s. ,s.,s.,

ll.,ll.,ll.,

p.name

from sys. ll

inner join sys. s on s.=ll.

left join sys. p on p.=ll.

where s. = 1

–删除链接服务器登录名映射

exec n ‘远程服务器IP’,NULL

–标注存储

EXEC n

@ = ‘远程服务器IP’ --登录名映射的链接服务器名称

@ = NULL --这是从链接服务器删除的SQL 登录或用户映射的名称

SSMS

选项 动态参数

如果为非零,则表明访问接口允许对参数化查询使用“?”参数标记语法。仅当该访问接口支持 rs 接口并支持“?”作为参数标记时,才应设置此选项。如果设置了此选项,则允许 SQL 针对该访问接口执行参数化查询。这种对访问接口执行参数化查询的能力会提高某些查询的性能。

嵌套查询

如果为非零,则表示访问接口允许在 FROM 子句中使用嵌套的 语句。如果设置了此选项,则允许 SQL 将某些查询委托给需要在 FROM 子句中嵌套 语句的访问接口。

仅零级

如果为非零,则只对访问接口调用 0 级的 OLE DB 接口。

允许进程内

如果为非零,则 SQL 允许将访问接口实例化为进程内服务器。如果未设置此选项,则默认行为是在 SQL 进程外实例化访问接口。在 SQL 进程外实例化访问接口,可防止 SQL 进程在访问接口中出错。在 SQL 进程外实例化访问接口时,不允许更新或插入长的引用列(text、ntext 或 image)。

非事务更新

如果为非零,则 SQL 允许更新,即使 不可用时也是如此。如果启用此选项,对访问接口的更新将不可恢复,因为该访问接口不支持事务。

作为访问路径的索引

如果为非零,则 SQL 尝试使用访问接口的索引来提取数据。默认情况下,索引只能用于元数据而且从不打开。

禁止link访问

如果设置了非零值,则 SQL 不允许通过 和 函数对 OLE DB 访问接口进行即席访问。如果未设置此选项,则 SQL 同样不允许进行即席访问。

存储过程中通过链接服务器访问远程服务器

执行存A服存储过程时会报 ‘未将[所用到的别名] 服务器配置为可用的RPC’ ,如何解决?

很简单,查看链接服务器的选项,将RPC 值由False 改为 TRUE 再调试,成功!

也有情况在这里无法更改,解决方案是:

 exec sp_configure 'show advanced options', 1; --默认是0    GO   RECONFIGURE WITH OVERRIDE; GO

包含访问 OLE DB 数据源中的远程数据所需的全部连接信息。当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用 OLE DB 连接并访问远程数据的一次性的、特殊的方法。可以在查询的 FROM 子句中像引用表名那样引用 函数。依据 OLE DB 提供程序的能力,还可以将 函数引用为 、 或 语句的目标表。尽管查询可能返回多个结果集,然而 只返回第一个。

语法

( ‘’

_SQL SERVER 链接服务器 以及 openrowset_SQL SERVER 链接服务器 以及 openrowset

, { 'datasource' ; 'user_id' ; 'password'| 'provider_string' }, { [ catalog.] [ schema.] object| 'query' } ) 

参数

‘’

字符串,它代表在注册表中指定的 OLE DB 提供程序的友好名。 没有默认值。

‘’

字符串常量,它对应着某个特定的 OLE DB 数据源。 是将被传递到提供程序 接口以初始化提供程序的 CE 属性。通常,这个字符串包含数据库文件的名称、数据库服务器的名称,或者提供程序能理解的用于查找数据库的名称。

‘’

字符串常量,它是传递到指定 OLE DB 提供程序的用户名。 为连接指定安全上下文,并将它作为 属性传递进来以初始化提供程序。

‘’

字符串常量,它是将被传递到 OLE DB 提供程序的用户密码。当初始化提供程序时,将 作为 属性传递进来。

‘’

提供程序特定的连接字符串,将它作为 属性传递进来以初始化 OLE DB 提供程序。通常 封装初始化提供程序所需的所有连接信息。

目录或数据库的名称,其中驻留着指定的对象。

架构的名称或指定对象的对象所有者名称。

对象名称,它唯一地标识出将要操作的对象。

‘query’

是字符串常量,发送到提供程序并由提供程序执行。

–如果只是临时访问,可以直接用

–查询示例

* from (‘’

,‘sql服务器名’;‘用户名’;‘密码’

,数据库名.dbo.表名)

–导入示例

* into 表 from (‘’

,‘sql服务器名’;‘用户名’;‘密码’

,数据库名.dbo.表名)

错误7405:异类查询要求为连接设置ANSI-NULL和ANSI-选项,这将确保一致的查询语意,请启用这些选项,然后重新发出查询

解决方法:

SET ON

SET ON

GO

下面的方法可以参考:

方法一:用 方法去操作异地数据库

@i int

set @i=1

* from (‘’,‘Data =IP地址;User ID=sa;=密码’).异地数据库名.dbo.表名

A inner join 本地数据库名…表名 B

on A.关联字段=B.关联字段 and A.字段名称=@i

使用用于 SQL 的 OLE DB 提供程序访问 pubs 数据库中的 表,该数据库在一个名为 的远程服务器上。从 、 及 中初始化提供程序,并且使用 语句定义返回的行集。

USE pubs

GO

a.*

FROM (‘’,‘’;‘sa’;‘’,

‘ * FROM pubs.dbo. ORDER BY , ’) AS a

GO

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了