将 SQL Server 备份还原到 Azure SQL 数据库

76

有没有一种简单的方法,可以使用 SQL 备份 .bak 文件,并将其作为还原点,在 Azure SQL 数据库上生成一个新的数据库?

在这种情况下,我通常看到的向导想要创建一个自定义文件来使用,但它会因为加密对象(函数和视图)而失败,我也没有看到其他可行的方法。


1
请参考这里,希望能对您有所帮助:https://msdn.microsoft.com/zh-cn/library/ms177429.aspx - Jason Clark
5个回答

120
如果您已经在本地计算机上有一个数据库,那么您可以使用SQL Management Studio直接将其迁移到Azure。按照以下步骤操作:
在SSMS中右键单击数据库名称: mssms 接着跟随出现的向导进行操作。
如果您正在运行SSMS v17,则可以配置Azure SQL数据库版本、大小和服务目标。

6
谢谢,它运行良好。我只需要在数据库服务器的防火墙设置中添加我的IP地址。 - Carlos Coelho
7
如果尝试恢复 .bak 文件以便将数据库及其数据导入 Azure,使用此方法进行部署肯定更加容易。 - hanzolo
1
请注意,如果您使用“Active Directory - Universal with MFA support”身份验证连接到Azure SQL数据库,则导出将会失败,并显示非常模糊的错误消息。请改用“SQL Server身份验证”。 - fjch1997
3
对于未来的读者:我强烈认为将备份文件恢复到本地数据库并执行此操作比手动使用 BACPAC 文件进行迁移更容易(这将创建 BACPAC 文件)。 - Gaspa79
1
@Kreker,它将创建数据库,如果已经存在则会失败(这是我的经验)。 - tristram
显示剩余2条评论

28

2
现在这还是真的吗?我必须使用Powershell将.bak文件恢复到Azure SQL。这可行吗,还是死路一条? - zainul
@fjch1997 zainzul并没有说他已经成功从.bak文件中恢复 - 他说他必须要实现这一点。他在问是否有可能。 - Morten Jensen
最好使用DMA,它将生成数据库中可能的更改。它还将生成迁移信息的查询。不需要上传bak文件。可能是可以的。但是,我建议您使用DMA程序。它更干净,并且会显示本地Sql实例与云端版本之间的错误。 - Juan Acosta

3

3
为了在Azure SQL Server上获得我的.BAK文件,我按照线程中两个答案的建议进行操作。在完成下面的步骤之前,BAK文件恢复在我的笔记本电脑SQL实例上失败了(备份是从SQL2016中获取的,不兼容我的SQL2014)。我正在接受来自EDX.org:“DAT216x交付关系数据仓库”的培训,并且已经从培训中下载了这两个文件:AdventureWorks2016CTP3.bakAdventureWorksDW2016CTP3.bak

BAK到AzureDB

  1. 用户:Joseph Idziorek | 回答:在虚拟机中使用SQL Server,这将使还原.bak文件成为可能。

我按照以下两个视频(托管在YouTube上)创建了Azure VM和SQL Instance,用于MCA培训...演示:Provisioning Microsoft Azure Services (VM, SQL)。9:00分钟的视频向您展示如何配置相关的Azure资源。该视频还演示了如何获取Azure SQL Database的连接字符串,该连接字符串在下一步中使用。

从Azure VM远程会话连接到SSMS后,我执行了从BAK恢复数据库。

  1. 用户:razon | 回答:右键单击(数据库名称)>任务>将数据库部署到SQL Azure...

从Azure VM远程会话连接到SSMS SQL Instance后,我运行了向导“将数据库部署到SQL Azure”。连接成功后,部署需要几分钟才能完成。注意:您必须使用“SQL Server身份验证”,因为“Windows”不支持Azure数据库。在此答案中提供的视频链接演示了Azure SQL Server身份验证

部署环境
@@服务器名 @@版本号
+------------------------------------------------------------------------------------------------------+
| Source                                                                                               |
+------------------------------------------------------------------------------------------------------+
| data216x                                                                                             |
|                                                                                                      |
| Microsoft SQL Server 2016 (SP1-CU13) (KB4475775) - 13.0.4550.1 (X64)                                 |
| Jan 10 2019 19:31:11                                                                                 |
| Copyright (c) Microsoft Corporation                                                                  |
| Developer Edition (64-bit) on Windows Server 2016 Datacenter 10.0 <X64> (Build 14393: ) (Hypervisor) |
+------------------------------------------------------------------------------------------------------+
| Target                                                                                               |
+------------------------------------------------------------------------------------------------------+
| sqlserver-dat216x                                                                                    |
|                                                                                                      |
|                                                                                                      |
| Microsoft SQL Azure (RTM) - 12.0.2000.8                                                              |
| Dec 19 2018 08:43:17                                                                                 |
| Copyright (C) 2018 Microsoft Corporation                                                             |
+------------------------------------------------------------------------------------------------------+

结果

在我的情况下,将数据库部署到Azure在步骤导入数据库时失败,并显示此消息。在我删除不兼容的对象后,Azure DB部署成功。

正在导入数据库...

TITLE: Microsoft SQL Server Management Studio

Could not import package.

Warning SQL0: A project which specifies SQL Server 2016 as the target platform may experience compatibility issues with Microsoft Azure SQL Database v12.

Error SQL72014: .Net SqlClient Data Provider: Msg 40536, Level 16, State 2, Line 1

'MEMORY_OPTIMIZED tables' is not supported in this service tier of the database. See Books Online for more details on feature support in different service tiers of Windows Azure SQL Database.

Error SQL72045: Script execution error. The executed script:

CREATE TYPE [Sales].[SalesOrderDetailType_inmem] AS TABLE (
    [OrderQty]       SMALLINT NOT NULL,
    [ProductID]      INT      NOT NULL,
    [SpecialOfferID] INT      NOT NULL,
    INDEX [IX_SpecialOfferID] NONCLUSTERED HASH ([SpecialOfferID]) WITH (BUCKET_COUNT = 8),
    INDEX [IX_ProductID] NONCLUSTERED HASH ([ProductID]) WITH (BUCKET_COUNT = 8))
    WITH (MEMORY_OPTIMIZED = ON);

(Microsoft.SqlServer.Dac)

BUTTONS:

OK

截图:

在我移除了不兼容的对象之后,Azure DB 的部署成功了。(注意:我尝试使用 Redgate SQLSearch 搜索 MEMORY_OPTIMIZED,但是它一直显示“无搜索结果”,尽管表定义确实包含该关键字,因此我不得不多次尝试。)

enter image description here


1

目前Azure不支持使用备份(.bak)文件在Azure SQL实例上还原数据库。但是有许多其他方法可以将SQL Database迁移到Azure SQL。例如,使用SQL Server Management Studio deploy mention或通过在.bacpac文件中备份,然后使用SSMS Export/Import导入它,或者使用Microsoft数据库迁移辅助工具。下面的链接将对您有用,因为它们详细解释了这些方法的步骤。


所有的链接都已经失效。 - k29

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接