3

SQL Server 2016 Developer Edition と SSMS (13.0.15600.2) の最新バージョンを使用しています。

bacpac'WITH SCHEMABINDING' でそれらを参照するテンポラル テーブルとオブジェクト (function.view) を含むデータ層アプリケーション ( ) をインポートすると、バグが発生する可能性があります。

このようなデータベースを backpac にエクスポートすることは完全に可能ですが、インポートして戻すとエラーが発生します:

エラー SQL72014: .Net SqlClient データ プロバイダー: メッセージ 3729、レベル 16、状態 4、行 1 オブジェクト 'BindTest' によって参照されているため、'Table2Version' を変更できません。エラー SQL72045: スクリプト実行エラー。実行されたスクリプト: ALTER TABLE [dbo].[Table2Version] SET (SYSTEM_VERSIONING = OFF);

この問題を再現する最小の DB 作成スクリプトは次のとおりです。

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

それは本当にバグですか、それとも何か間違っていますか?

4

1 に答える 1