Szukasz obejście:Unikać schematu niedopasowanie systemu numerów wersji tabel
Error: SQL71609: System-versioned current and history tables do not have matching schemes. Mismatched column: 'XXXX'.
Gdy próbuje użyć SQL 2016 System-wersjonowanym (Temporal) Stoły w SSDT dla Visual Studio 2015.
I” Wcześniej zdefiniowane podstawowy tabeli:
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
(zakładając [history]
schemat jest poprawnie utworzony w SSDT). To dobrze się układa za pierwszym razem.
Gdybym później dokonać zmiany:
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
Wtedy budowa zakończy się komunikatem o błędzie powyżej. Każda zmiana typu danych, długości, precyzji lub skali spowoduje ten błąd. (W tym zmiana z VARCHAR
na CHAR
i VARCHAR(50)
na VARCHAR(51)
, zmiana NOT NULL
na NULL
nie powoduje błędu.) Robienie Clean
nie naprawia rzeczy.
Moje bieżące obejście polega na upewnieniu się, że najnowsza wersja została sprawdzona w celu kontroli źródła, następnie otwórz Eksplorator obiektów SQL Server, rozwiń folder Projects - XXXX
i przejdź do tabeli dotkniętej problemem, a następnie usuń ją. Następnie muszę przywrócić kod (który usuwa SSDT) z kontroli źródła. Ta procedura jest nużąca, niebezpieczna, a nie to, co chcę robić.
Czy ktoś znalazł sposób, aby to naprawić? Czy to błąd?
Korzystam z Microsoft Visual Studio Professional 2015, wersja 14.0.25431.01 Update 3 z narzędziami Data Server 14.0.61021.0 programu SQL Server.
Twoja tabela nie wygląda na prawidłową tabelę z wersją systemu - brakuje jej kolumny "OKRES ZA SYSTEM CZASU" i "PERIOD" - https://msdn.microsoft.com/en-us/library/mt590957. aspx –
Masz rację! Zapomniałem uwzględnić te, kiedy budowałem przykłady. Naprawiłem wpis. –
Nie mogę replikować tego w SQL RTM 2016, wykonując instrukcję 'ALTER TABLE'. W jaki sposób zmieniasz swoje schematy? –