Azure SQL数据库是否支持内存优化表?

时间:2015-08-11 12:10:46

标签: azure azure-sql-database sql-server-2014 in-memory

我正在尝试查看SQL Server 2014和内存优化表以及它与Power BI的集成。我正在考虑将现有数据库(包含多个内存优化表)迁移到Azure的最佳方法是什么? Azure SQL数据库是否支持内存优化表?

感谢。

2 个答案:

答案 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)。

这是我制作的流程图:

  • 您使用的是DTU还是vCore?
    • DTU:
      • 您是否正在使用 Basic 层(5个DTU)?如果是,则否,不支持内存中。
      • 您是否正在使用 Standard 层(10-3000 DTU)?如果是,则否,不支持内存中。
      • 您是否正在使用 Premium 层(125-4000 DTU)?如果是,则是,支持内存中
    • vCores:
      • 您是否使用通用层?如果是,则否,不支持内存中。
      • 您是否正在使用超量层?如果是,则否,不支持内存中。
      • 您使用的是关键业务层吗?如果是,则是,支持内存中

您可以通过打开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运营成本。我想他们正在等着看客户如何使用它。鉴于使用该系统需要额外的技术细节和透彻的了解,客户最终可能会滥用它-必须保护用户免受自身伤害。