shanzm-2021年8月28日 16:56:34

0. 同一台服务器不同数据库

同一个服务器中在一个连接查询不同的数据库中的表,可以在表名前加上数据库的名为前缀

【示例】

select * from 数据库.dbo.表

1. 使用跨库查询函数——OpenDataSource()

在不同服务器中,一个服务器的连接中查询另外一个服务器中的数据库,可以在sql语句中使用OpenDataSource('sqloledb','server=服务器IP地址;uid=数据库登陆用户;pwd=密码').数据库名.dbo.表名

【示例】

select * from OpenDataSource('sqloledb','server=xxx.xxx.xxx.xxx;uid=sa;pwd=*****').database_name.dbo.table_name

【说明】

  • OpenDataSource()函数不接受参数变量。只能是写死指定的连接字符串,不能使用变量,所以在存储过程中不能动态的设置OpenDataSource()参数,这一点及其的不安全&不方便

  • 使用OpenDataSource()函数需要启用一些高级配置选项:

    • 第一次使用的时候,可能会提示:
    消息 15281,级别 16,状态 1,第 1 行
    SQL Server 阻止了对组件“Ad Hoc Distributed Queries”的 STATEMENT“OpenRowset/OpenDatasource”的访问,因为此组件已作为此服务器安全配置的一部分而被 关闭。系统管理员可以通过使用 sp_configure 启用“Ad Hoc Distributed Queries”。有关启用“Ad Hoc Distributed Queries”的详细信息,请搜索 SQL Server 联机丛书中的“Ad Hoc Distributed Queries”。

    可以在当前连接的数据库中,通过以下语句开启该组件

    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

2. 使用链接服务器(Linking Server)

  1. 使用图形界面创建链接服务器:

    创建链接服务器,可以使用MSSMS-->服务器对象-->链接服务器-->右键:新建链接服务器

    常规:

    • 链接服务器:服务器IP地址
    • 服务器类型:选择SQL Server

    安全性:

    • 选中使用此安全上下文建立连接
    • 输入用户名和密码
  2. 使用存储过程创建链接服务器

当前服务器的连接中,同时执行以下存储过程,创建其他服务器(即目标服务器)为链接服务器

exec sp_addlinkedserver--创建链接服务器
@server='链接名称',--要访问的服务器别名(一般就是直接使用服务器地址)
@srvproduct='',
@provider='SQLOLEDB',
@datasrc='目标服务器地址'--要访问的服务器地址
go
exec sp_addlinkedsrvlogin--添加链接服务器的登陆用户
'链接名称',--被访问的服务器别名
'false',
null,
'用户名',--目标服务器账号
'密码'--目标服务器密码

示例:从链接服务器中查询

select * from 链接服务器别名.database_name.dbo.table_name

3. 使用OpenDataSource()函数和链接服务器的使用区别

  • OpenDataSource()功能相对链接服务器少一些
  • 对于需要频繁访问的数据源,要将其设置为链接服务器,而不是使用OpenDataSource
  • OpenDataSoucre()每次调用都明文提供连接字符串,包含密码,相对不安全

4. 参考

T-SQL——关于跨库连接查询的更多相关文章

  1. oracle跨库连接查询

    一.授权(本地客户器端授权当前用户) grant create database link to szfile 第一种连接方法:配置本地数据库服务器的tnsnames.ora文件 SZFILE = ( ...

  2. SQL Server 跨库连接

    -- 开启组件 reconfigure reconfigure -- 关闭组件 reconfigure reconfigure -- 查询远程数据库 SELECT * FROM OPENDATASOU ...

  3. 问题:sqlserver 跨服务器连接;结果:Sql Server 跨服务器连接

    Sql Server 跨服务器连接 用openrowset连接远程SQL或插入数据 --如果只是临时访问,可以直接用openrowset --查询示例 select * from openrowset ...

  4. SQL Server跨库复制表数据错误的解决办法

    SQL Server跨库复制表数据的解决办法   跨库复制表数据,有很多种方法,最常见的是写程序来批量导入数据了,但是这种方法并不是最优方法,今天就用到了一个很犀利的方法,可以完美在 Sql Serv ...

  5. SQL2008和SQL2000可以跨服务器连接查询的测试实例

    测试目的: SQL2008 和 SQL2000 是否可以跨服务器连接查询 -- 测试环境: --A 虚拟机 XP ( IP : .0.0.213 )安装 SQL2000 个人版,并安装 SP4 补丁. ...

  6. SQL Server跨库跨服务器访问实现

    我们经常会遇到一个数据库要访问另一个数据库,或者一台服务器要访问另一台服务器里面的数据库. 那么这个如何实现的呢? 相信看完这篇文章你就懂了! 同一台服务器跨库访问实现 1. 首先创建两个数据库Cro ...

  7. SQL的7种连接查询详细实例讲解

    SQL的7种连接查询详细实例讲解 原文链接:https://mp.weixin.qq.com/s/LZ6BoDhorW4cSBhaGy8VUQ 在使用数据库查询语句时,单表的查询有时候不能满足项目的业 ...

  8. c# 实现定义一套中间SQL可以跨库执行的SQL语句

    c# 实现定义一套中间SQL可以跨库执行的SQL语句 目前数据的种类非常多,每种数据都支持sql语句,但是大家发现没有每种数据的SQL都有自己的语法特性,都是SQL语句都没有一个特定的语法标准,导致开 ...

  9. SQL的多表连接查询

    SQL的多表连接查询 多表连接查询具有两种规范,SQL92和SQL99规范. SQL92规范支持下列多表连接查询: (1)等值连接: (2)非等值连接: (3)外连接: (4)广义笛卡尔积: SQL9 ...

随机推荐

  1. 微信小程序云开发-云存储-上传、下载、打开文件文件(word/excel/ppt/pdf)一步到位

    一.wxml文件 <!-- 上传.下载.打开文件一步执行 --> <view class="handle"> <button bindtap=&quo ...

  2. 微信小程序云开发-云存储-上传单个视频到云存储并显示到页面上

    一.wxml文件 <!-- 上传视频到云存储 --> <button bindtap="chooseVideo" type="primary" ...

  3. P6106 [Ynoi2010] Self Adjusting Top Tree

    P6106 [Ynoi2010] Self Adjusting Top Tree 题意 给出平面直角坐标系上若干不与坐标轴平行的处于第一象限的互不相交的线段,多次询问平面中一个第一象限的矩形与这些线段 ...

  4. selenium 鼠标,键盘操作

    1.鼠标操作 导包:from selenium.webdriver.common.action_chains import ActionChains 1.context_click()        ...

  5. 构建前端第12篇之---在Vue中对组件,变量,函数的全局引入

    张燕涛写于2020-01-16 星期two 本篇还是源于import和export的使用,昨天看es6入门 和MDN文档,大体上用法了解了,但今天看ElementUI源码的时候,看到 //src/in ...

  6. maven 与profile,resources,properties 关系

    top 的 pom.xml 看<profiles>的标签 <profiles> <!--dat环境--> <profile> <id>DAT ...

  7. Kibana未授权访问(5601)

    漏洞检测 http://172.16.16.212:5601/app/kibana#/ 无需账号密码可以登录进入界面.

  8. 谷歌内部流出Jetpack Compose最全上手指南,含项目实战演练!

    简介 Jetpack Compose是在2019Google i/O大会上发布的新的库.Compose库是用响应式编程的方式对View进行构建,可以用更少更直观的代码,更强大的功能,能提高开发速度. ...

  9. 如何将代码优雅的插入到word中

    介:写博客或者word时需要插入代码,但如何更优雅的将代码插入到word中呢? 反面教材如下: 技巧步骤1:插入表格,设置表格无边框: 技巧步骤2:使用Notepad++的高级功能: 大部分代码编辑器 ...

  10. Linux从头学07:中断那么重要,它的本质到底是什么?

    作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...