如何在Visual Studio 2019中使用SSDT创建系统版本表?

里罗

我正在尝试使用数据库项目创建带有系统版本控制的表。

  1. 以下架构给出错误:

    SQL70633:系统版本化的临时表必须具有明确提供的历史表名称。

     CREATE TABLE [dbo].[Products]
     (
         [Id] INT NOT NULL PRIMARY KEY, 
         [Name] NVARCHAR(255) NOT NULL, 
         [ModifiedBy] NVARCHAR(127) NULL
     )
     WITH (SYSTEM_VERSIONING = ON)
     GO
    
  2. 使用显式名称:

    SQL71501:表:[dbo]。[产品]对表[history]。[ProductsHistory]的引用尚未解决。
    SQL46010:]附近的语法不正确。

     CREATE TABLE [dbo].[Products]
     (
         [Id] INT NOT NULL PRIMARY KEY, 
         [Name] NVARCHAR(255) NOT NULL, 
         [ModifiedBy] NVARCHAR(127) NULL
     )
     WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [history].ProductsHistory))
     GO
    

我尝试了最新版本的Visual Studio 2019(16.7.5)和最新预览版(16.8.0 Preview 3.2)。

帕纳焦蒂斯·卡纳沃斯

两种情况下的语法均无效。在SSMS中执行第一个查询将返回:

如果未定义SYSTEM_TIME周期,则无法将SYSTEM_VERSIONING设置为ON。

该命令需要一个PERIOD FOR SYSTEM_TIME子句,该子句指定用于指定记录有效期的列。

文档的例子展示了如何创建一个时间表默认情况下,自动命名为历史记录表:

CREATE TABLE [dbo].[Products]
 (
     [Id] INT NOT NULL PRIMARY KEY, 
     [Name] NVARCHAR(255) NOT NULL, 
     [ModifiedBy] NVARCHAR(127) NULL,

     SysStartTime DATETIME2 GENERATED ALWAYS AS ROW START NOT NULL,
     SysEndTime DATETIME2 GENERATED ALWAYS AS ROW END NOT NULL,
     PERIOD FOR SYSTEM_TIME (SysStartTime,SysEndTime)
 )
 WITH (SYSTEM_VERSIONING = ON)

在这种情况下,SysStartTimeSysEndTime用于指定记录的有效期。

使用用户指定的表名称创建时态表需要类似的语法

create TABLE [dbo].[Products]
 (
     [Id] INT NOT NULL PRIMARY KEY, 
     [Name] NVARCHAR(255) NOT NULL, 
     [ModifiedBy] NVARCHAR(127) NULL,

     SysStartTime DATETIME2 GENERATED ALWAYS AS ROW START NOT NULL,
     SysEndTime DATETIME2 GENERATED ALWAYS AS ROW END NOT NULL,
     PERIOD FOR SYSTEM_TIME (SysStartTime,SysEndTime)
 )
 WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.ProductHistory))

可以在不同的架构上创建历史表,例如history,只要该架构存在,但是除非解决了某些特定问题,否则可能不是一个好主意。当前表和历史表代表相同的实体,彼此依赖并且具有特定的安全性限制,因此将它们存储在单独的架构中可能会增加工作难度。

要在单独的架构中创建表,请首先创建架构:

CREATE SCHEMA history

然后使用表定义中的模式:

 WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = history.ProductHistory))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Visual Studio中使用SSDT重命名表

如何在Visual Studio中使用SSDT生成表的选择或插入脚本

如何在 Visual Studio 2019 中使用 editorconfig?

如何在 Visual Studio 2019 中使用 C#10

如何在 Visual Studio 2019 中使用 FolderBrowserDialog?

如何在Visual Studio 2019中创建Xamarin PCL项目

如何在 Visual Studio 2019 中创建 DSL 工具项目?

如何在Visual Studio 2019中创建Azure函数?

如何在Visual Studio 2019中创建XUnit项目的.NET Framework 4.6版本?

如何在Visual Studio中使用PhoneGap

如何在Visual Studio中使用IntelliCode?

如何在Visual Studio中使用Startswith

如何升级 Visual Studio 2019 中使用的 ESLint 版本?

如何在C ++中使用Boost库创建3个并行执行线程(在Visual Studio 2019中)?

如何在Visual Studio中的表单中创建表

如何在 Visual Studio 2017 中使 != 变为 ==

如何在Visual Studio 2019中使用.NET 4.6.2版运行单元测试?

如何在Visual Studio 2019中使用git bash终端配置文件?

如何在Visual Studio中更改“许可给”?

如何在Visual Studio中升级ReSharper?

如何在Visual Studio中包括OpenSSL

如何在Visual Studio中获取行号

如何在visual studio中调试python

如何在Visual Studio 2017中使用Qt库?

如何在Visual Studio 2017中使用Java

如何在Visual Studio 2017中使用Jupyter Notebook?

如何在Visual Studio 2013中使用SSL

如何在Visual Studio 2010中使用Boost

如何在Visual Studio 2013中使用NuGet 3.0?

TOP 榜单

热门标签

归档