SQL Azure (18) 使用External Table实现垮库查询

简介:

 《Windows Azure Platform 系列文章目录

 

  问题

  1.我们在进行SQL Server开发的时候,经常会使用垮库查询。但是在默认情况下,使用Azure SQL Database不支持垮库查询。如下图:

  

  2.我们执行垮库查询语句,如下:

SELECT A.CustomerID,A.FirstName, A.LastName,B.OrderID FROM   CRMDB.dbo.CustomerInfo AS A LEFT JOIN OrderDB.dbo.OrderInfo AS B ON   A.CustomerID=B.CustomerID

 

  3.会出现以下的报错信息:

  

  4.可以看到,在默认情况下,使用Azure SQL Database不支持垮库查询。

 

  使用外部表:

  准备工作

  1.我们这里增加一些难度。我们在Azure SQL Database分别创建2个Server。如下图:

  

  注意,为了避免出现跨Azure数据中心之间的延时,请尽量在同一个数据中心创建Server。笔者在中国东部数据中心,创建2个Server

 

  2.我们在这2个Server下创建2个不同的Database,如下图:

 

  3.使用SSMS,连接到ew79sank1x.database.chinacloudapi.cn,1433,数据库CRMDB,创建表CustomerInfo

复制代码
create table dbo.CustomerInfo
(
    CustomerID nvarchar(100) not null primary key,
    FirstName nvarchar(100) not null,
    LastName nvarchar(100) not null
)
Go

insert into CustomerInfo(CustomerID,FirstName,LastName) values 
('001','Jason','Zhang'),
('002','Peter','Huang'),
('003','Jason','Hu'),
('004','Mike','Lee')
复制代码

 

  4.使用SSMS,连接到lcqyvtqri1.database.chinacloudapi.cn,1433,数据库OrderDB,创建表OrderInfo

复制代码
create table dbo.OrderInfo
(
    OrderID nvarchar(100) not null,
    CustomerID nvarchar(100) not null,
)
Go

insert into OrderInfo(OrderID,CustomerID) values 
('2013010100001','001'),
('2013010100002','001'),
('2013010100003','002'),
('2013010100004','002'),
('2013010100005','002'),
('2013010100006','003'),
('2013010100007','004')
复制代码

 

  创建外部表

  1.使用SSMS,连接到ew79sank1x.database.chinacloudapi.cn,1433,数据库CRMDB。执行以下脚本

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<password>'; 
CREATE DATABASE SCOPED CREDENTIAL ElasticDBQueryCred 
WITH IDENTITY = '<username>', 
SECRET = '<password>';  

  请注意:上面的<username>和<password>,是连接到lcqyvtqri1.database.chinacloudapi.cn,1433,数据库OrderDB的用户名和密码。注意是连接到另外的Server和Databse,不是自己。

 

  2.执行以下命令

CREATE EXTERNAL DATA SOURCE MyElasticDBQueryDataSrc WITH 
    (TYPE = RDBMS, 
    LOCATION = 'lcqyvtqri1.database.chinacloudapi.cn', 
    DATABASE_NAME = 'OrderDB', 
    CREDENTIAL = ElasticDBQueryCred, 
) ;

  连接到lcqyvtqri1.database.chinacloudapi.cn,1433

 

  3.创建外部表

复制代码
CREATE EXTERNAL TABLE dbo.OrderInfo
(
    OrderID nvarchar(100) not null,
    CustomerID nvarchar(100) not null
)
WITH 
( DATA_SOURCE = MyElasticDBQueryDataSrc)
复制代码

  注意:上面创建的External Table的Table Name和Table Schema,必须与Azure SQL Database: lcqyvtqri1.database.chinacloudapi.cn,1433,数据库OrderDB中的表OrderInfo的Table Name和Table Schema一样。

 

  4.执行完毕后,我们可以在ew79sank1x.database.chinacloudapi.cn,1433,查看到原本保存在lcqyvtqri1.database.chinacloudapi.cn,1433的数据库OrderDB中的表dbo.OrderInfo。如下图:

 

  5.我们可以执行以下语句,查询dbo.OrdrInfo表的内容:

SELECT [OrderID],[CustomerID] FROM [dbo].[OrderInfo]

 

  

  执行结果,就是我们在lcqyvtqri1.database.chinacloudapi.cn,1433数据库OrderDB中的表dbo.OrderInfo的值

  

  6.执行查询语句:

SELECT A.CustomerID,A.FirstName, A.LastName,B.OrderID FROM dbo.CustomerInfo AS A LEFT JOIN dbo.OrderInfo AS B ON A.CustomerID=B.CustomerID

  如下图:

  

 

 

  参考资料:

https://azure.microsoft.com/en-us/documentation/articles/sql-database-elastic-query-getting-started-vertical/



本文转自Lei Zhang博客园博客,原文链接:http://www.cnblogs.com/threestone/p/5552502.html,如需转载请自行联系原作者

目录
相关文章
|
2月前
|
SQL 监控 关系型数据库
一键开启百倍加速!RDS DuckDB 黑科技让SQL查询速度最高提升200倍
RDS MySQL DuckDB分析实例结合事务处理与实时分析能力,显著提升SQL查询性能,最高可达200倍,兼容MySQL语法,无需额外学习成本。
|
2月前
|
SQL 存储 关系型数据库
MySQL体系结构详解:一条SQL查询的旅程
本文深入解析MySQL内部架构,从SQL查询的执行流程到性能优化技巧,涵盖连接建立、查询处理、执行阶段及存储引擎工作机制,帮助开发者理解MySQL运行原理并提升数据库性能。
|
2月前
|
SQL 监控 关系型数据库
SQL优化技巧:让MySQL查询快人一步
本文深入解析了MySQL查询优化的核心技巧,涵盖索引设计、查询重写、分页优化、批量操作、数据类型优化及性能监控等方面,帮助开发者显著提升数据库性能,解决慢查询问题,适用于高并发与大数据场景。
|
1月前
|
SQL 关系型数据库 MySQL
(SQL)SQL语言中的查询语句整理
查询语句在sql中占了挺大一部分篇幅,因为在数据库中使用查询语句的次数远多于更新与删除命令。而查询语句比起其他语句要更加的复杂,可因为sql是数据库不可或缺的一部分,所以即使不懂,也必须得弄懂,以上。
194 0
|
3月前
|
SQL XML Java
通过MyBatis的XML配置实现灵活的动态SQL查询
总结而言,通过MyBatis的XML配置实现灵活的动态SQL查询,可以让开发者以声明式的方式构建SQL语句,既保证了SQL操作的灵活性,又简化了代码的复杂度。这种方式可以显著提高数据库操作的效率和代码的可维护性。
268 18
|
3月前
|
SQL 人工智能 数据库
【三桥君】如何正确使用SQL查询语句:避免常见错误?
三桥君解析了SQL查询中的常见错误和正确用法。AI产品专家三桥君通过三个典型案例:1)属性重复比较错误,应使用IN而非AND;2)WHERE子句中非法使用聚合函数的错误,应改用HAVING;3)正确的分组查询示例。三桥君还介绍了学生、课程和选课三个关系模式,并分析了SQL查询中的属性比较、聚合函数使用和分组查询等关键概念。最后通过实战练习帮助读者巩固知识,强调掌握这些技巧对提升数据库查询效率的重要性。
142 0
|
4月前
|
SQL
SQL中如何删除指定查询出来的数据
SQL中如何删除指定查询出来的数据
|
SQL 存储 数据库
SQL Azure的第三方工具介绍(下)
一、概述 Windows Azure毕竟是新兴的云计算平台,其三大组成部分之一的SQL Azure关系型云数据库引擎提供的功能还不够丰富。有鉴于此,一些公司和开发者为了满足用户的需要,开发了一些优秀的工具,下面对这些第三方工具做一个概要性的介绍。
1085 0
|
SQL 存储 数据库
SQL Azure的第三方工具介绍(下)
版权声明:本文为博主chszs的原创文章,未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/7842942 回报CSDN! 一、概述 Windows Azure毕竟是新兴的云计算平台,其三大组成部分之一的SQL Azure关系型云数据库引擎提供的功能还不够丰富。
902 0
|
关系型数据库 MySQL 网络安全
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")
5-10Can't connect to MySQL server on 'sh-cynosl-grp-fcs50xoa.sql.tencentcdb.com' (110)")