博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Azure SQL Database (21) 将整张表都迁移到Azure Stretch Database里
阅读量:6172 次
发布时间:2019-06-21

本文共 4092 字,大约阅读时间需要 13 分钟。

 《》

 

   

     

     

      

 

 

  注意:本节介绍的是,使用国内由世纪互联运维的Azure China Stretch Database,因为国内的Azure和海外的Azure对应的DNS Name略有不同,请读者仔细甄别

 

  本节使用的T-SQL语句,在下载

 

 

  在上一节内容中,

  我们发现Sales.OrderTraking这张表,可以迁移到Azure Stretch Database。没有兼容性问题

  

 

  接下来,本章将介绍如何将这张表的所有内容,都迁移到Azure Stretch Database里。

 

  准备工作:

  1.首先我们使用Azure China管理平台:

  输入Azure China的用户名和密码,然后登陆。

  2.点击SQL是数据库,添加新的SQL Database Server服务器(请注意:是创建Server,不是创建Database,单独创建Server不会产生任何费用)

  

  3.创建的时候,记得选择"启用最新的SQL数据库更新(V12)"

  

  笔者已经预先创建了云上的Server Name: l3cq1dckpd

  用户名:sqladmin,密码:Abc@123456

  注意哦,这些信息下面会使用的。

 

  4.创建完毕后,记得把本地笔记本的公网IP地址,加入到Azure SQL Database Server的IP白名单里。

  

  

 

 

 

  开始使用:

  1.我们在本地笔记本电脑,打开SQL Server Management Studio (SSMS),运行以下T-SQL语句。  

USE AdventureWorks2016CTP3 GO SELECT ot.SalesOrderID, ot.CarrierTrackingNumber, ot.OrderTrackingID, ot.TrackingEventID, te.EventName, ot.EventDetails, ot.EventDateTimeFROM Sales.OrderTracking ot JOIN Sales.TrackingEvent te ON ot.TrackingEventID = te.TrackingEventIDORDER BY ot.SalesOrderID, ot.TrackingEventID;

  可以观察到,因为数据表都保存在本地SQL Server 2016数据库中,所以虽然一共有188790行,但是查询结果不超过2秒

 

  2.运行以下T-SQL语句,对本地SQL Server 2016,打开归档功能

EXEC sp_configure 'remote data archive' , '1';RECONFIGURE;

 

  3.对云端Azure SQL Database的用户名和密码,进行加密,加密的密码同SQL Database的密码:

USE Adventureworks2016CTP3;CREATE MASTER KEY ENCRYPTION BY PASSWORD='Abc@123456'CREATE DATABASE SCOPED CREDENTIAL AzureDBCred WITH IDENTITY = 'sqladmin', SECRET = 'Abc@123456';

 

  4.将本地的SQL Server 2016的归档目标,指向到微软云SQL Database Server(l3cq1dckpd.database.chinacloudapi.cn)

  这个l3cq1dckpd.database.chinacloudapi.cn,是我们在准备工作中,创建的新的服务器

ALTER DATABASE [AdventureWorks2016CTP3] SET REMOTE_DATA_ARCHIVE = ON (SERVER = 'l3cq1dckpd.database.chinacloudapi.cn', CREDENTIAL = AzureDBCred);

  上面的语句执行时间有点长。请注意:到目前为止,还没有任何的本地SQL Server 2016表数据,迁移到云端Stretch Database里。

 

 

  5.运行以下T-SQL,将Sales.OrderTracking表中的所有内容,都迁移到Azure Stretch Database里

  注意:MIGRATION_STATE = OUTBOUND

ALTER TABLE Sales.OrderTracking SET (REMOTE_DATA_ARCHIVE = ON (MIGRATION_STATE = OUTBOUND));

  运行完毕后,本地SQL 2016数据库中的表Sales.OrderTracking的所有数据行,才开始异步迁移

 

  6.请注意,执行步骤5的语句的时候,其实数据是异步进行迁移的

  我们可以执行以下语句,查看归档数据迁移的进度。

SELECT * from sys.dm_db_rda_migration_status

  注意:如果上面的语句执行没有结果,请稍等片刻后继续执行。会看到以下结果:

  请注意:时间为UTC时区,Migrated_Rows表示已经迁移到云端的Stretch Database的数据行,可以看到每次迁移的数据量是9999行

 

 

  7.等到步骤6中的T-SQL产生执行结果了,我们分别执行以下语句。

USE AdventureWorks2016CTP3GO--显示本地数据行和数据容量EXEC sp_spaceused 'Sales.OrderTracking', 'true', 'LOCAL_ONLY';GO--显示云端Stretch Database的数据行和数据量EXEC sp_spaceused 'Sales.OrderTracking', 'true', 'REMOTE_ONLY';GO

  执行结果如下图:

  

  图的上半部分,显示本地SQL Server 2016的表Sales.OrderTracking,一共有数据行188790

  下半部分,显示云端的Stretch Database的表Sales.OrderTracking,一共有0行数据

 

  8.我们稍等片刻后,继续执行步骤7的语句。结果如下图:

  

  可以看到,本地SQL Server 2016的表Sales.OrderTracking的所有数据,都迁移到了云端Stretch Database。

  本地0行,云端Stretch Database 188790行。

 

  9.我们登陆Azure China管理平台:

  可以看到在云端,已经有新的Stretch Database,版本为 DS100

  

  

  10.然后我们重复执行步骤1中的查询语句,因为Sales.OrderTracking数据从本地迁移到了云端,所以查询时间变长了。

  之前本地执行2秒,现在在云端查询,需要18秒左右。图略。

 

  11.请记住,可以迁移到云端(但未迁移)的SQL数据(表Table或者试图View),或者已经迁移到Stretch Database云端的SQL数据,无法执行UPDATE和DELETE操作

  插入测试数据到云端Stretch Database的表Sales.OrderTracking,没问题:

---插入测试表INSERT INTO [Sales].[OrderTracking]([SalesOrderID],[CarrierTrackingNumber],[TrackingEventID],[EventDetails],[EventDateTime])VALUES('6666','046DFAA-F901-442A-9D09-67',1,'This Data is generated by Lei Zhang',GetDate())

  但是无法执行UPDATE和DELETE操作

--这句话会报错UPDATE [Sales].[OrderTracking] SET [CarrierTrackingNumber]='6666' WHERE [EventDetails]='This Data is generated by Lei Zhang'

 

  12.现在表Sales.OrderTracking数据都保存到云端Stretch Database,如果我们想关闭归档功能,可以执行以下语句。

--Disable Stretch Database and bring back remote dataALTER TABLE Sales.OrderTracking SET (REMOTE_DATA_ARCHIVE (MIGRATION_STATE = INBOUND));

 

  13.重复执行步骤7的语句,可以观察到数据异步从云端,迁移到本地SQL 2016。

USE AdventureWorks2016CTP3GO--显示本地数据行和数据容量EXEC sp_spaceused 'Sales.OrderTracking', 'true', 'LOCAL_ONLY';GO--显示云端Stretch Database的数据行和数据量EXEC sp_spaceused 'Sales.OrderTracking', 'true', 'REMOTE_ONLY';GO

  执行结果略。

 

 

  14.最后请大家记住,如果要完全关闭归档功能,除了执行步骤13以外,还需要登陆Azure China管理平台:

  删除之前迁移产生的数据库。

  

 

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

你可能感兴趣的文章
8月18日云栖精选夜读:阿里视频云最强转码技术揭秘:窄带高清原理解析+用户接入指南...
查看>>
涨姿势:工业物联网与大数据融合的四个重点
查看>>
社会学视角下的大数据方法论及其困境
查看>>
《云计算:原理与范式》一1.7 平台即服务供应商
查看>>
百度成立“百度搜索公司”:固本拓新驱动生态裂变
查看>>
宇宙风暴?才怪!瑞典暗指俄罗斯黑客攻击航空控制系统
查看>>
系统进程管理工具Process Explorer
查看>>
富士通仍执着SPARC架构芯片 将坚持推新
查看>>
易宪容:企业要利用大数据挖掘潜在需求
查看>>
微软声称Win10周年更新为Edge浏览器带来更好电池寿命
查看>>
混合云是企业IT的未来吗?
查看>>
LINE在日本取得成功 但全球化之路还很长
查看>>
红帽云套件新增QuickStart Cloud Installer,加快私有云部署
查看>>
MapXtreme 2005 学习心得 一些问题(八)
查看>>
流量精细化运营时代,营销SaaS之使命——流量掘金
查看>>
雅虎同意出售核心资产
查看>>
Win10大丰收的节奏 微软收编iOS全部150万应用
查看>>
智慧城市要除“城市病” 中兴通讯开辟新增长极
查看>>
Opera已确认解散iOS开发团队
查看>>
DevOps:新的业务浪潮
查看>>