ищет обходные пути для:Избегайте несоответствие схемы в системе контроля версий таблиц
Error: SQL71609: System-versioned current and history tables do not have matching schemes. Mismatched column: 'XXXX'.
При попытке использовать SQL System 2016-версированный (Temporal) таблицы в SSDT для Visual Studio 2015.
I» ве определил основную таблицу:
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 14.0.61021.0.
Ваш стол не похож на действительную таблицу с системной версией - в ней отсутствуют столбцы «ПЕРИОД ДЛЯ СИСТЕМНОГО ВРЕМЕНИ» и «ПЕРИОД» - https://msdn.microsoft.com/en-us/library/mt590957. aspx –
Вы верны! Я забыл включить их, когда я построил примеры. Я исправил сообщение. –
Я не могу воспроизвести это в RTM SQL 2016, выполнив инструкцию 'ALTER TABLE'. Как вы изменяете свою схему? –