使用SQL Server Stretch Database迁移冷数据至Azure

随着数据库的不断增长,传统的扩展方式——购买额外的硬盘来增加存储空间——变得越来越昂贵且成本效率低下。为了解决这一问题,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数据库。

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485