在 Visual Studio SQL Server 2017 数据库项目中禁用临时历史记录保留

问题描述 投票:0回答:3

有没有办法在 Visual Studio SQL Server 2017 数据库项目中将临时历史记录保留的数据库选项设置为关闭?

当我从发布配置文件生成脚本时,它会添加下面的代码,但我无法找到阻止它的方法。

ALTER DATABASE [$(DatabaseName)]
    SET TEMPORAL_HISTORY_RETENTION ON 
    WITH ROLLBACK IMMEDIATE;

我不想阻止它设置所有数据库选项,就像我使用其他选项一样。我只想将其设置为 OFF,这样脚本就不会产生上面的输出。

  • Visual Studio 版本 - 专业版 2019 (16.4.5)
  • SQL Server 数据工具 - 16.0.62002.03150
  • SQL Server 版本 - 2017 (14.0.3223.3)

我觉得我只是在某个地方缺少一个复选框?!?

任何帮助将非常感激。

visual-studio-2019 sql-server-data-tools sql-server-2017
3个回答
0
投票

添加此参数 /p:"ScriptDatabaseOptions=false"


0
投票

我认为这是 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
    


0
投票
OFF

文件并为

.sqlproj
参数添加
True
False

TemporalHistoryRetentionEnabled

    

© www.soinside.com 2019 - 2024. All rights reserved.