T-SQL——关于跨库连接查询
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)
使用图形界面创建链接服务器:
创建链接服务器,可以使用MSSMS-->服务器对象-->链接服务器-->右键:新建链接服务器
常规:
- 链接服务器:服务器IP地址
- 服务器类型:选择SQL Server
安全性:
- 选中使用此安全上下文建立连接
- 输入用户名和密码
使用存储过程创建链接服务器
在当前服务器的连接中,同时执行以下存储过程,创建其他服务器(即目标服务器)为链接服务器
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——关于跨库连接查询的更多相关文章
- oracle跨库连接查询
一.授权(本地客户器端授权当前用户) grant create database link to szfile 第一种连接方法:配置本地数据库服务器的tnsnames.ora文件 SZFILE = ( ...
- SQL Server 跨库连接
-- 开启组件 reconfigure reconfigure -- 关闭组件 reconfigure reconfigure -- 查询远程数据库 SELECT * FROM OPENDATASOU ...
- 问题:sqlserver 跨服务器连接;结果:Sql Server 跨服务器连接
Sql Server 跨服务器连接 用openrowset连接远程SQL或插入数据 --如果只是临时访问,可以直接用openrowset --查询示例 select * from openrowset ...
- SQL Server跨库复制表数据错误的解决办法
SQL Server跨库复制表数据的解决办法 跨库复制表数据,有很多种方法,最常见的是写程序来批量导入数据了,但是这种方法并不是最优方法,今天就用到了一个很犀利的方法,可以完美在 Sql Serv ...
- SQL2008和SQL2000可以跨服务器连接查询的测试实例
测试目的: SQL2008 和 SQL2000 是否可以跨服务器连接查询 -- 测试环境: --A 虚拟机 XP ( IP : .0.0.213 )安装 SQL2000 个人版,并安装 SP4 补丁. ...
- SQL Server跨库跨服务器访问实现
我们经常会遇到一个数据库要访问另一个数据库,或者一台服务器要访问另一台服务器里面的数据库. 那么这个如何实现的呢? 相信看完这篇文章你就懂了! 同一台服务器跨库访问实现 1. 首先创建两个数据库Cro ...
- SQL的7种连接查询详细实例讲解
SQL的7种连接查询详细实例讲解 原文链接:https://mp.weixin.qq.com/s/LZ6BoDhorW4cSBhaGy8VUQ 在使用数据库查询语句时,单表的查询有时候不能满足项目的业 ...
- c# 实现定义一套中间SQL可以跨库执行的SQL语句
c# 实现定义一套中间SQL可以跨库执行的SQL语句 目前数据的种类非常多,每种数据都支持sql语句,但是大家发现没有每种数据的SQL都有自己的语法特性,都是SQL语句都没有一个特定的语法标准,导致开 ...
- SQL的多表连接查询
SQL的多表连接查询 多表连接查询具有两种规范,SQL92和SQL99规范. SQL92规范支持下列多表连接查询: (1)等值连接: (2)非等值连接: (3)外连接: (4)广义笛卡尔积: SQL9 ...
随机推荐
- Python+js进行逆向编程加密MD5格式
一.安装nodejs 二.安装:pip install PyExecJs 三.js源文件Md5格式存放本地,如下 var n = {}function l(t, e) {var n = (65535 ...
- Beam Search快速理解及代码解析(上)
Beam Search 简单介绍一下在文本生成任务中常用的解码策略Beam Search(集束搜索). 生成式任务相比普通的分类.tagging等NLP任务会复杂不少.在生成的时候,模型的输出是一个时 ...
- python里的StringIO
Python2中StringIO调用方法如下: import StringIO iost = StringIO.StringIO() Python3中已将StringIO归入io,调用方法如下: im ...
- Python自动化测试面试题-Linux篇
目录 Python自动化测试面试题-经验篇 Python自动化测试面试题-用例设计篇 Python自动化测试面试题-Linux篇 Python自动化测试面试题-MySQL篇 Python自动化测试面试 ...
- html拖动元素排序(插件版)
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 < ...
- SQL语句(六)分页查询和联合查询
目录 一.分页查询 语法格式 应用 二.联合查询 语法和作用 特点 应用 UNION和UNION ALL的区别 一.分页查询 语法格式 SELECT 查询列表 FROM 表 WHERE ... GRO ...
- no-strings-attached writeup
no-strings-attach writeup 1.程序分析 主函数如图所示,关键函数在authenticate中,进入函数. 分析可得,decrypt代码段为关键代码段,进入关键函数decryp ...
- 1009 Product of Polynomials (25分) 晚上脑子就是容易僵住
#include<iostream> using namespace std; struct { int a; double b; }poly[1001]; double a[2001]; ...
- Linux 内核预备知识:浅析 offsetof 宏以及新手的所思所想
最近一头扎进了 Linux 内核的学习中,对于我这样一个没什么 C 语言基础的新生代 Java 农民工来说实在太痛苦了.Linux 内核的学习,需要的基础知识太多太多了:C 语言.汇编语言.数据结构与 ...
- 常见web中间件漏洞(五)weblogic漏洞
继续整理有关中间件漏洞思路(仅做简单思路整理,不是复现,复现请参考大佬们的长篇好文,会在文章中列举部分操作) WebLogic是Oracle公司出品的一个application server,确切的说 ...