随着数据库的不断增长,传统的扩展方式——购买额外的硬盘来增加存储空间——变得越来越昂贵且成本效率低下。为了解决这一问题,Microsoft推出了Stretch Database功能,允许用户将数据迁移至Azure,同时不影响本地数据库的查询能力。这意味着,即使数据已经被迁移到Azure,用户仍然可以在本地数据库实例上运行查询。此外,Stretch Database不会影响应用程序逻辑和查询。
要使用Stretch Database功能,需要一个有效的MicrosoftAzure订阅,以及SQL Server2016或更高版本。
将首先创建一个数据库和一个表,然后向表中添加大量数据。接着,将使用Stretch功能将数据迁移至Azure,并运行一些查询。
USE [master]
GO
CREATE DATABASE [StretchDatabase]
GO
USE [StretchDatabase]
GO
CREATE TABLE [dbo].[StretchTable](
[sn] INT IDENTITY(1,1) NOT NULL,
[Name] VARCHAR(50) NULL,
[Last Name] VARCHAR(50) NULL
) ON [PRIMARY]
GO
为了尝试将冷数据迁移至Azure,将使用循环插入1000行数据。可以根据需要插入更多数据。
USE [StretchDatabase]
GO
DECLARE @cnt INT = 0;
WHILE @cnt < 1000
BEGIN
INSERT INTO stretchTable (Name, [Last Name]) VALUES ('Mahesh', 'Dahal')
SET @cnt = @cnt + 1;
END;
现在,需要在数据库中使用UI启用并迁移数据。右键点击数据库 -> 任务 -> Stretch并启用。这将弹出一个新窗口来配置Stretch功能。点击下一步,将找到选择要应用Stretch数据库的表的选项。选择表后,点击下一步,需要登录到Azure订阅。如果只想迁移表中的特定数据,那么点击“整个表”。一个窗口将弹出,可以在其中选择想要迁移的数据。配置好要迁移的行后,点击完成并继续。将被带到配置Azure订阅的窗口。
点击登录,然后输入账户凭据。登录后,选择区域并为将在Azure中创建的数据库提供新的用户名和密码。这些用户名和密码是为SQL Azure数据库准备的,该数据库将在Azure中创建并存储数据。点击下一步,将被要求确认配置。点击完成,然后所有设置将被应用,数据将被迁移。
如果Stretch数据库和迁移成功,数据库图标将发生变化。如果检查Azure订阅,将发现一个新的数据库已经创建。现在,让运行一些查询。
SELECT * FROM StretchTable
运行上述代码,将看到表中的所有数据。如果使用以下命令查看数据的来源,将看到本地表中没有存储数据。
SP_SPACEUSED 'stretchtable'
使用上述命令可以找到该表使用的总存储空间。而使用以下命令可以找到本地存储中该表使用的存储空间:
SP_SPACEUSED 'stretchtable', @mode='local_only'
结果将显示只有72KB的存储被使用。如果运行命令以查找远程存储中使用的空间,那么将看到所有数据都存储在远程数据库中,即之前创建的SQLAzure数据库。