Избегайте несоответствия схемы в системных версиях таблиц
В поисках обходного пути для:
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.