Flo*_*gel 1 dacpac sqlpackage sql-server-data-tools
在构建过程中,我们基于 SSDT .sqlproject 生成数据库的 dacpac 文件。此 dacpac 随后使用 sqlpackage 部署到生产环境。尽管使用 /p:DropStatisticsNotInSource=False 开关,sqlpackage 仍将删除 sqlproject 与生产数据库上次同步后添加的所有统计信息。
我们还可以使用发布配置文件和 SSDT 的生成脚本选项来重现此内容:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<IncludeCompositeObjects>True</IncludeCompositeObjects>
<TargetDatabaseName>hotel</TargetDatabaseName>
<DeployScriptFileName>Database.sql</DeployScriptFileName>
<TargetConnectionString>connectionstring</TargetConnectionString>
<BlockOnPossibleDataLoss>False</BlockOnPossibleDataLoss>
<DropObjectsNotInSource>True</DropObjectsNotInSource>
<DoNotDropDatabaseRoles>True</DoNotDropDatabaseRoles>
<DoNotDropDatabaseScopedCredentials>True</DoNotDropDatabaseScopedCredentials>
<DoNotDropUsers>True</DoNotDropUsers>
<DoNotDropServerRoles>True</DoNotDropServerRoles>
<DoNotDropSecurityPolicies>True</DoNotDropSecurityPolicies>
<DoNotDropSearchPropertyLists>True</DoNotDropSearchPropertyLists>
<DoNotDropPermissions>True</DoNotDropPermissions>
<DoNotDropPartitionSchemes>True</DoNotDropPartitionSchemes>
<DoNotDropPartitionFunctions>True</DoNotDropPartitionFunctions>
<DoNotDropExternalFileFormats>True</DoNotDropExternalFileFormats>
<DoNotDropExternalTables>True</DoNotDropExternalTables>
<DoNotDropErrorMessages>True</DoNotDropErrorMessages>
<DoNotDropDefaults>False</DoNotDropDefaults>
<ProfileVersionNumber>1</ProfileVersionNumber>
<DropStatisticsNotInSource>False</DropStatisticsNotInSource>
<ScriptRefreshModule>False</ScriptRefreshModule>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
我们如何强制 sqlpackage 不删除统计信息?
问题是使用DropObjectsNotInSource=True,它会覆盖该DropStatisticsNotInSource=False选项。这要么是一个错误,要么是文档中未指定sqlpackage.exe。
一种可能的解决方法是使用 Ed Elliott 的 AgileSqlClub SSDT 过滤器,如本博客中所述。在这种情况下,您需要使用AgileSqlClub.SqlPackageFilter.dll并添加以下选项:
/p:AdditionalDeploymentContributors=AgileSqlClub.DeploymentFilterContributor
/p:AdditionalDeploymentContributorArguments="SqlPackageFilter=IgnoreType(Statistics)"
| 归档时间: |
|
| 查看次数: |
1084 次 |
| 最近记录: |