我正在尝试查看SQL Server 2014和内存优化表以及它与Power BI的集成。我正在考虑将现有数据库(包含多个内存优化表)迁移到Azure的最佳方法是什么? Azure SQL数据库是否支持内存优化表?
感谢。
答案 0 :(得分:3)
根据this MSDN article,Azure Sql数据库支持它,Azure Sql数据仓库不支持。对于Azure Sql数据库,仅在Premium Azure SQL数据库的预览中 。它既不支持Basic也不支持标准层(请参阅azure-specific documentation中的更多详细信息)。
如果您尝试使用Visual Studio开发Azure Sql数据库,则2013和2015版本都会显示以下错误消息(您的数据库项目不会编译):
SQL71578: The element Table: [dbo].[*******] has property IsMemoryOptimized set to a value that is not supported in Microsoft Azure SQL Database v12.
此时,您必须在Azure VM中考虑SQL Server 2014或2016,而不是Azure SQL。
答案 1 :(得分:2)
从2020年第4季度开始,Azure SQL仅在几个定价层中支持内存中OLTP(又名MEMORY_OPTIMIZED
)。 This is half-documented in this (hard to find) Azure SQL documentation page,另一半来自古老的博客文章和Azure门户网站的反复试验。
(再次注意,这仅适用于“ Azure SQL”,而不适用于在VM或托管实例服务中运行全功能SQL Server)。
这是我制作的流程图:
您可以通过打开SSMS,连接到数据库(您的实际数据库,而不是MEMORY_OPTIMIZED
)并运行以下命令来找出数据库中是否启用了master
功能:
SELECT DatabasePropertyEx( DB_NAME(), 'IsXTPSupported' ) AS IsXTPSupported;
如果获得0
,则数据库中不支持内存中OLTP。如果您得到1
,则表示支持。
如果尝试执行CREATE TYPE dbo.Foo AS TABLE ( ... ) WITH ( MEMORY_OPTIMIZED = ON );
,则会出现此错误:
第20级第2行第2线40536消息
数据库的此服务层不支持“ MEMORY_OPTIMIZED表”。有关Windows Azure SQL数据库的不同服务层中功能支持的更多详细信息,请参见联机丛书。
很遗憾,对于Microsoft为内存中OLTP进行的所有宣传,我感到失望的是,它不适用于大多数Azure SQL客户。更令人惊讶的是,In-Memory旨在减轻IO负担,这应意味着In-Memory OLTP将减少Microsoft自己的Azure运营成本。我想他们正在等着看客户如何使用它。鉴于使用该系统需要额外的技术细节和透彻的了解,客户最终可能会滥用它-必须保护用户免受自身伤害。