我需要修改表来添加MEMORY_OPTIMIZED = ON , DURABILITY =SCHEMA_ONLY,根据文档的语法如下:
ALTER TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }
{
<table_option>
}<table_option>所在的地方:
<table_option> ::=
{
MEMORY_OPTIMIZED = ON
| DURABILITY = {SCHEMA_ONLY | SCHEMA_AND_DATA}
| SYSTEM_VERSIONING = ON [ ( HISTORY_TABLE = schema_name . history_table_name
[, DATA_CONSISTENCY_CHECK = { ON | OFF } ] ) ]
}我的代码是:
ALTER TABLE memtypes
MEMORY_OPTIMIZED = ON , DURABILITY =SCHEMA_ONLY;但我知道这个错误:
Msg 102,第15级,状态1,第2行 “内存优化”附近的不正确语法。
有什么帮助吗?
发布于 2019-06-15 06:53:03
将磁盘表迁移到内存中的OLTP表所需的过程并不简单,需要进行分析才能做出迁移的最终决定。但是,内存中OLTP表提供的好处值得您的努力。
假设我们有一个基于磁盘的表,如下所示:
CREATE TABLE <Disk based table name>
(
id INT Primary Key,
fname VARCHAR(10)
);
GO让我们一步一步地完成这个过程。
为了有一个内存优化表,您的数据库需要一个内存优化文件组和一个分配给它的文件。要做到这一点,请遵循以下步骤,或者如果您已经设置了这些步骤,只需简单地忽略它们:
--add the filegroup to database named TEST
ALTER DATABASE <Your Database>
ADD FILEGROUP <Filegroup Name>
CONTAINS MEMORY_OPTIMIZED_DATA;
--Add and assign a file to filegroup
ALTER DATABASE <Your Database>
ADD FILE
(
NAME = <File Name>,
FILENAME = <File store location>
)
TO FILEGROUP <Filegroup Name>;
--Simply test the database to check if it now supports in memory optimised tables or not?
USE <Your Database>;
GO
SELECT g.name,
g.type_desc,
f.physical_name
FROM sys.filegroups g
JOIN sys.database_files f
ON g.data_space_id = f.data_space_id
WHERE g.type = 'FX'
AND f.type = 2;在这些步骤之后,您需要创建一个新的memry优化表,并将数据从基于磁盘的表迁移到它。
CREATE TABLE <In memory Table name>
(
id INT,
fname VARCHAR(10),
CONSTRAINT PK_TEST_Memory_ID
PRIMARY KEY NONCLUSTERED HASH (id) WITH(BUCKET_COUNT=1572864)
)
WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_ONLY);
GO
INSERT INTO <In memory Table name>
SELECT *
FROM <Disk based table name>;阅读更多关于这种迁移的红门博客:https://www.red-gate.com/simple-talk/sql/database-administration/migrating-disk-based-table-memory-optimized-table-sql-server/
这里还有另一个有用的GitHub:https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/sql-database/sql-database-in-memory-oltp-migration.md
https://stackoverflow.com/questions/56607708
复制相似问题