Временная таблица SQL Server 2016 выбрасывает неправильный синтаксис для «GENERATED» - PullRequest
1 голос
/ 07 июня 2019

Помогите, я не могу заставить это работать по какой-то причине.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[MYTABLE]
(
    [MyTableId] [INT] IDENTITY(1,1) NOT NULL,
    [Description] [NVARCHAR](255) NULL,
    [DisplayOrder] [INT] NOT NULL,
    [VALIDFROM] [DATETIME2](7) GENERATED ALWAYS AS ROW START NOT NULL,
    [VALIDTO] [DATETIME2](7) GENERATED ALWAYS AS ROW END NOT NULL,
    PERIOD FOR SYSTEM_TIME ([VALIDFROM], [VALIDTO]),
    CONSTRAINT [PK_MYTABLE] PRIMARY KEY CLUSTERED ([MyTableId] ASC)
)  ON [PRIMARY]
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[MYTABLE_History]))
GO

Я продолжаю получать эти ошибки:

Сообщение 102, Уровень 15, Состояние 1, Строка 24
Неверный синтаксис рядом с 'GENERATED'.

Сообщение 319, Уровень 15, Состояние 1, Строка 29
Неверный синтаксис рядом с ключевым словом «с». Если этот оператор является общим табличным выражением, предложением xmlnamespaces или предложением контекста отслеживания изменений, предыдущий оператор должен заканчиваться точкой с запятой.

Сообщение 319, Уровень 15, Состояние 1, Строка 30
Неверный синтаксис рядом с ключевым словом «с». Если этот оператор является распространенным табличным выражением, предложением xmlnamespaces или предложением контекста отслеживания изменений, предыдущий оператор должен заканчиваться точкой с запятой.

Это установка SQL Server 2016.

Любая помощь?

Ответы [ 2 ]

2 голосов
/ 07 июня 2019

Просто немного по синтаксису.Переместите ваш первый WITH к вашему ограничению, так как оно привязано к нему, перед файловой группой.

CREATE TABLE [dbo].[MYTABLE](
    [MyTableId] [int] IDENTITY(1,1) NOT NULL,
    [Description] [nvarchar](255) NULL,
    [DisplayOrder] [int] NOT NULL,
    [VALIDFROM] [datetime2](7) GENERATED ALWAYS AS ROW START NOT NULL,
    [VALIDTO] [datetime2](7) GENERATED ALWAYS AS ROW END NOT NULL,
    PERIOD FOR SYSTEM_TIME ([VALIDFROM], [VALIDTO]),
    CONSTRAINT [PK_MYTABLE] 
        PRIMARY KEY CLUSTERED ([MyTableId] ASC)
        WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
) ON [PRIMARY]
 WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[MYTABLE_History]))
0 голосов
/ 07 июня 2019

Вы допустили ошибку в синтаксисе. Сначала WITH относится к вашему индексу, поэтому должно быть после этого.

CREATE TABLE [dbo].[MYTABLE](
    [MyTableId] [int] IDENTITY(1,1) NOT NULL,
    [Description] [nvarchar](255) NULL,
    [DisplayOrder] [int] NOT NULL,
    [VALIDFROM] [datetime2](7) GENERATED ALWAYS AS ROW START NOT NULL,
    [VALIDTO] [datetime2](7) GENERATED ALWAYS AS ROW END NOT NULL,
    PERIOD FOR SYSTEM_TIME ([VALIDFROM], [VALIDTO]),
    CONSTRAINT [PK_MYTABLE] PRIMARY KEY CLUSTERED ([MyTableId] ASC) WITH (PAD_INDEX = OFF,STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
) ON [PRIMARY] with (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[MYTABLE_History]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...