有没有办法在 Visual Studio SQL Server 2017 数据库项目中将临时历史记录保留的数据库选项设置为关闭?
当我从发布配置文件生成脚本时,它会添加下面的代码,但我无法找到阻止它的方法。
ALTER DATABASE [$(DatabaseName)]
SET TEMPORAL_HISTORY_RETENTION ON
WITH ROLLBACK IMMEDIATE;
我不想阻止它设置所有数据库选项,就像我使用其他选项一样。我只想将其设置为 OFF,这样脚本就不会产生上面的输出。
我觉得我只是在某个地方缺少一个复选框?!?
任何帮助将非常感激。
添加此参数 /p:"ScriptDatabaseOptions=false"
我认为这是 Sql Server 数据库工具中的一个错误。
有一个 MSBuid 属性
TemporalHistoryRetentionEnabled
传递给 SlqBuildTask
,因此我尝试将 TemporalHistoryRetentionEnabled
属性添加到 SQL Server 数据库项目的 sqlproj 文件中:
<TemporalHistoryRetentionEnabled>Off</TemporalHistoryRetentionEnabled>
不幸的是,我发现当我这样做时出现构建错误:
C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Microsoft\VisualStudio\v17.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets(507,5): Error: MSB4018: The "SqlBuildTask" task failed unexpectedly.
System.Reflection.TargetException: Object does not match target type.
at System.Reflection.RuntimeMethodInfo.CheckConsistency(Object target)
at System.Reflection.RuntimeMethodInfo.InvokeArgumentsCheck(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at System.Reflection.RuntimePropertyInfo.SetValue(Object obj, Object value, Object[] index)
at Microsoft.Data.Tools.Schema.Sql.Build.SqlTaskHost.SetFieldInModelOptionsObject(KeyValuePair`2 propItem, SqlModelOptions modelOptions)
at Microsoft.Data.Tools.Schema.Sql.Build.SqlTaskHost.InitializeDatabaseOptions(String propertyThatChanged)
at Microsoft.Data.Tools.Schema.Sql.Build.SqlTaskHost.Set(String propertyName, Object value)
at Microsoft.Data.Tools.Schema.Tasks.Sql.TaskHostLoader.SetDatabaseModelOptionsProperties(SqlTaskHost host, IDictionary`2 properties)
at Microsoft.Data.Tools.Schema.Tasks.Sql.TaskHostLoader.ValidateHost(SqlTaskHost& host, ErrorManager& errors)
at Microsoft.Data.Tools.Schema.Tasks.Sql.TaskHostLoader.LoadImpl(ITaskHost providedHost, TaskLoggingHelper providedLogger)
at Microsoft.Data.Tools.Schema.Tasks.Sql.TaskHostLoader.Load(ITaskHost providedHost, TaskLoggingHelper providedLogger)
at Microsoft.Data.Tools.Schema.Tasks.Sql.SqlBuildTask.ExecuteLoadTaskHostStep()
at Microsoft.Data.Tools.Schema.Tasks.Sql.SqlBuildTask.ExecuteStep(Func`1 step)
at Microsoft.Data.Tools.Schema.Tasks.Sql.SqlBuildTask.Execute()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()
当目标平台设置为 Microsoft Azure SQL 数据库时,构建错误就会消失。任何其他目标平台设置似乎都会导致问题。
不幸的是,如果目标数据库将
TEMPORAL_HISTORY_RETENTION
设置为 ON
,则似乎没有办法阻止在较低目标平台版本中设置 TEMPORAL_HISTORY_RETENTION
。OFF
文件并为
.sqlproj
参数添加 True
或 False
。即
TemporalHistoryRetentionEnabled