开始使用:
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.EventDateTime
FROM Sales.OrderTracking ot JOIN Sales.TrackingEvent te ON ot.TrackingEventID = te.TrackingEventID
ORDER BY ot.SalesOrderID, ot.TrackingEventID;
可以观察到,因为数据表都保存在本地SQL Server 2016数据库中,所以虽然一共有188790行,但是查询结果不超过2秒
2.运行以下T-SQL语句,对本地SQL Server 2016,打开归档功能
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 注意:如果上面的语句执行没有结果,请稍等片刻后继续执行。会看到以下结果:
USE AdventureWorks2016CTP3
GO
--显示本地数据行和数据容量
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的语句。结果如下图:
---插入测试表
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 data
ALTER TABLE Sales.OrderTracking SET (REMOTE_DATA_ARCHIVE (MIGRATION_STATE = INBOUND));
13.重复执行步骤7的语句,可以观察到数据异步从云端,迁移到本地SQL 2016。
USE AdventureWorks2016CTP3
GO
--显示本地数据行和数据容量
EXEC sp_spaceused 'Sales.OrderTracking', 'true', 'LOCAL_ONLY';
GO
--显示云端Stretch Database的数据行和数据量
EXEC sp_spaceused 'Sales.OrderTracking', 'true', 'REMOTE_ONLY';
GO
执行结果略。
14.最后请大家记住,如果要完全关闭归档功能,除了执行步骤13以外,还需要登陆Azure China管理平台:https://manage.windowsazure.cn/ 删除之前迁移产生的数据库。