【发布时间】: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