Избегайте несоответствия схемы в системных версиях таблиц

В поисках обходного пути для:

Error: SQL71609: System-versioned current and history tables do not have matching schemes. Mismatched column: 'XXXX'.

При попытке использования системно-версионных (временных) таблиц SQL 2016 в SSDT для Visual Studio 2015.

Я определил базовую таблицу:

CREATE TABLE [dbo].[Example] (
    [ExampleId] INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    [ExampleColumn] VARCHAR(50) NOT NULL,
    [SysStartTime] datetime2 GENERATED ALWAYS AS ROW START HIDDEN NOT NULL,
    [SysEndTime] datetime2 GENERATED ALWAYS AS ROW END HIDDEN NOT NULL,
    PERIOD FOR SYSTEM_TIME (SysStartTime,SysEndTime)
)
WITH (SYSTEM_VERSIONING=ON(HISTORY_TABLE=[history].[Example]))
GO

(Предполагая, что[history] схема правильно создана в SSDT). Это хорошо строит в первый раз.

Если я позже внесу изменения:

CREATE TABLE [dbo].[Example] (
    [ExampleId] INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    [ExampleColumn] CHAR(50) NOT NULL, -- NOTE: Changed datatype
    [SysStartTime] datetime2 GENERATED ALWAYS AS ROW START HIDDEN NOT NULL,
    [SysEndTime] datetime2 GENERATED ALWAYS AS ROW END HIDDEN NOT NULL,
    PERIOD FOR SYSTEM_TIME (SysStartTime,SysEndTime)
)
WITH (SYSTEM_VERSIONING=ON(HISTORY_TABLE=[history].[Example]))
GO

Затем сборка завершается с сообщением об ошибке выше. Любое изменение типа данных, длины, точности или масштаба приведет к этой ошибке. (Включая изменение отVARCHAR вCHAR а такжеVARCHAR(50) вVARCHAR(51); измененияNOT NULL вNULL не выдает ошибку.)Clean не исправляет вещи.

Мой текущий обходной путь - убедиться, что у меня установлена ​​последняя версия для контроля версий, затем откройте проводник объектов SQL Server, развернитеProjects - XXXX папку и перейдите к соответствующей таблице, затем удалите ее. Затем я должен восстановить код (который SSDT удаляет) из системы контроля версий. Эта процедура утомительна, опасна, и не то, что я хочу делать.

Кто-нибудь нашел способ это исправить? Это ошибка?

Я использую Microsoft Visual Studio Professional 2015, Версия 14.0.25431.01, Обновление 3 с SQL Server Data Tools 14.0.61021.0.

Ответы на вопрос(2)

Ваш ответ на вопрос