J'utilise la dernière version de SQL Server 2016 Developer Edition et SSMS (13.0.15600.2).BOGUE possible avec importation BACPAC et tables temporelles
Il existe un bogue possible dans l'importation de l'application de niveau de données (bacpac
) qui contient des tables temporelles et tout objet (fonction. View) qui les référence avec 'WITH SCHEMABINDING'.
Il est parfaitement possible d'exporter cette base de données à Backpac mais quand il réimporter - il y a une erreur:
Error SQL72014: .Net SqlClient Data Provider: Msg 3729, Level 16, State 4, Line 1 Cannot ALTER 'Table2Version' because it is being referenced by object 'BindTest'. Error SQL72045: Script execution error. The executed script: ALTER TABLE [dbo].[Table2Version] SET (SYSTEM_VERSIONING = OFF);
Le script de création DB le plus petit qui reproduira ce problème est:
USE [master]
GO
CREATE DATABASE [temptest]
GO
ALTER DATABASE [temptest] SET COMPATIBILITY_LEVEL = 130
GO
USE [temptest]
GO
CREATE SCHEMA [History]
GO
CREATE TABLE [History].[Table2Version](
[Id] [int] NOT NULL,
[Name] [nvarchar](50) NULL,
[SysStartTime] [datetime2](0) NOT NULL,
[SysEndTime] [datetime2](0) NOT NULL
) ON [PRIMARY]
GO
CREATE CLUSTERED INDEX [ix_Table2Version] ON [History].[Table2Version]
([SysEndTime] ASC, [SysStartTime] ASC)
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Table2Version](
[Id] [int] NOT NULL,
[Name] [nvarchar](50) NULL,
[SysStartTime] [datetime2](0) GENERATED ALWAYS AS ROW START HIDDEN NOT NULL,
[SysEndTime] [datetime2](0) GENERATED ALWAYS AS ROW END HIDDEN NOT NULL,
CONSTRAINT [PK__Table2Version] PRIMARY KEY NONCLUSTERED ([Id] ASC),
PERIOD FOR SYSTEM_TIME ([SysStartTime], [SysEndTime])
) ON [PRIMARY]
WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [History].[Table2Version] , DATA_CONSISTENCY_CHECK = ON))
GO
CREATE FUNCTION [dbo].[BindTest]()
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN SELECT Id AS id
from dbo.Table2Version ;
GO
Est-ce vraiment un bug ou je fais quelque chose de mal?