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
相关产品推荐
相关产品推荐

