Я использую последнюю версию SQL Server 2016 Developer edition и SSMS (13.0.15600.2).
Возможная ошибка при импорте приложения уровня данных (bacpac
), которое содержит любые временные таблицы и любой объект (функция. Представление), который ссылается на них с помощью 'WITH SCHEMABINDING'.
Такую базу данных в backpac вполне можно экспортировать, но при импорте обратно возникает ошибка:
Ошибка SQL72014: поставщик данных .Net SqlClient: Msg 3729, уровень 16, состояние 4, строка 1 Невозможно изменить «Table2Version», поскольку на него ссылается объект «BindTest». Ошибка SQL72045: ошибка выполнения сценария. Выполняемый скрипт: ALTER TABLE [dbo]. [Table2Version] SET (SYSTEM_VERSIONING = OFF);
Самый маленький скрипт создания БД, который воспроизведет эту проблему:
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
Это действительно ошибка или я что-то не так делаю?