【问题标题】:How do you change the DURABILITY option on an existing memory-optimized table in SQL Server 2016?如何更改 SQL Server 2016 中现有内存优化表的 DURABILITY 选项?
【发布时间】:2019-10-31 15:59:46
【问题描述】:

我想将 SQL Server 2016 中内存优化表的 DURABILITY 从 SCHEMA_AND_DATA 更​​改为 SCHEMA_ONLY。

Microsoft documentation 建议以下 ALTER TABLE 语句应该起作用:

ALTER TABLE mem_opt_table
DURABILITY = SCHEMA_ONLY

但它给出了以下错误:

Msg 102, Level 15, State 1, Line 12
Incorrect syntax near 'DURABILITY'.

更改表的持久性设置的正确语法是什么?我还缺少任何其他步骤吗?

【问题讨论】:

  • 我很确定这个语法是不正确的。它也不是最近为 2019 年添加的东西,因为它的存在时间比这更长。据我所知,没有办法改变耐用性。您需要创建一个新表并复制数据。也许这是 Azure 的东西? (我没有可以测试的实例。)
  • 不支持对内存优化表执行 ALTER 操作。这包括更改bucket_count、添加或删除索引、添加或删除列等操作。本主题提供有关如何更新内存优化表docs.microsoft.com/en-us/sql/relational-databases/… 的指南。因此,您无法执行此操作。
  • 我很困惑 - 您链接的页面上的第一行显示“内存优化表上的架构和索引更改可以通过使用 ALTER TABLE 语句来执行。”。另外,如果不支持,为什么会有 whole section on the ALTER TABLE docs 专门指代 ALTER TABLE 语句?
  • 您的考虑是正确的,因为在 MSDN 中有两个关于此主题的链接我从 SQL 2014 的以下链接中引用了我之前的评论详细信息; docs.microsoft.com/en-us/SQL/relational-databases/… 对于 SQL 2019 ; docs.microsoft.com/en-us/sql/relational-databases/… 另外,关于 ALTER TABLE 文档问题,您是对的,但我对此一无所知。所以我认为这个选项仍然不提供
  • 该文档从 2016 年开始更新,包括了耐久性表选项。您的数据库是否处于兼容模式?

标签: sql-server sql-server-2016 memory-optimized-tables


【解决方案1】:

原始问题中链接的文档有缺陷,正如许多 cmets 所建议的那样。这在 github 问题回复中得到了证实:https://github.com/MicrosoftDocs/sql-docs/issues/3523#issuecomment-554511264

因此,执行此操作的唯一方法是删除表并使用所需的 DURABILITY 设置重新创建它。

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多