You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio 2022 SQL Server数据库项目时态表创建报错求助

时态表在Visual Studio 2022数据库项目中报错的排查方案

问题根源

你脚本里的History_retention_period = 12 MONTHS是SQL Server 2019及以上版本才支持的特性。Visual Studio数据库项目默认可能设置了更低的目标SQL Server版本,导致语法校验不通过,这是最常见的报错原因。另外脚本里还有一个语法小问题,也可能触发校验报错。

解决步骤

1. 调整项目目标平台版本

  • 右键Visual Studio里的SQL Server数据库项目,打开「属性」
  • 切换到「SQL Server」标签页,在「目标平台」下拉框中选择SQL Server 2019或更高版本(比如SQL Server 2022)
  • 保存设置后重新生成项目

2. 修正脚本语法细节

你的脚本中PERIOD FOR SYSTEM_TIME (StartDate, EndDate),末尾多了一个逗号,SSMS会忽略这个小问题,但Visual Studio的语法校验更严格,建议删掉这个逗号:

CREATE TABLE [dbo].[Franchises]
(
    [FranchiseID] INT NOT NULL PRIMARY KEY IDENTITY, 
    [Name] NVARCHAR(100) NOT NULL, 
    [ShortName] NVARCHAR(50) NOT NULL, 
    [ModifiedBy] NVARCHAR(250) NULL, 
    [ModifiedOn] DATETIME NULL DEFAULT GetDate(), 
    [CreatedBy] NVARCHAR(250) NULL, 
    [CreatedOn] DATETIME NULL DEFAULT GetDate(),     
    [StartDate] DATETIME2 GENERATED ALWAYS AS ROW START HIDDEN NOT NULL, 
    [EndDate] DATETIME2 GENERATED ALWAYS AS ROW END HIDDEN NOT NULL, 
    PERIOD FOR SYSTEM_TIME (StartDate, EndDate) -- 移除此处多余的逗号
)
WITH
(
    SYSTEM_VERSIONING = ON 
    (
        HISTORY_TABLE = dbo.FranchiseHistory,
        DATA_CONSISTENCY_CHECK = OFF,
        History_retention_period = 12 MONTHS
    )
)

3. 清理项目缓存(可选)

如果调整目标平台后仍报错,右键项目选择「清理」,再依次执行「生成」和「部署」,重新同步架构。

内容的提问来源于stack exchange,提问作者Codernator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 13:47:21