有没有一种简单的方法,可以使用 SQL 备份 .bak 文件,并将其作为还原点,在 Azure SQL 数据库上生成一个新的数据库?
在这种情况下,我通常看到的向导想要创建一个自定义文件来使用,但它会因为加密对象(函数和视图)而失败,我也没有看到其他可行的方法。
有没有一种简单的方法,可以使用 SQL 备份 .bak 文件,并将其作为还原点,在 Azure SQL 数据库上生成一个新的数据库?
在这种情况下,我通常看到的向导想要创建一个自定义文件来使用,但它会因为加密对象(函数和视图)而失败,我也没有看到其他可行的方法。
AdventureWorks2016CTP3.bak
和AdventureWorksDW2016CTP3.bak
。
部署环境
- 用户: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恢复数据库。
- 用户: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
,但是它一直显示“无搜索结果”,尽管表定义确实包含该关键字,因此我不得不多次尝试。)
目前Azure不支持使用备份(.bak)文件在Azure SQL实例上还原数据库。但是有许多其他方法可以将SQL Database迁移到Azure SQL。例如,使用SQL Server Management Studio deploy mention或通过在.bacpac文件中备份,然后使用SSMS Export/Import导入它,或者使用Microsoft数据库迁移辅助工具。下面的链接将对您有用,因为它们详细解释了这些方法的步骤。