首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSDT/SqlPackage丢弃统计信息

SSDT/SqlPackage丢弃统计信息
EN

Stack Overflow用户
提问于 2017-03-09 17:44:25
回答 1查看 753关注 0票数 0

在构建期间,我们基于SSDT .sqlproject生成数据库的dacpac文件。这个dacpac稍后将使用sqlpackage部署到生产环境中。尽管使用了/p:DropStatisticsNotInSource=False开关,sqlpackage仍将删除上次sqlproject与生产数据库同步后添加的所有统计信息。

我们也可以使用发布配置文件和SSDT的generate script选项来重现:

代码语言:javascript
复制
<?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>

如何才能强制sqlpackage不丢弃统计信息?

EN

回答 1

Stack Overflow用户

发布于 2018-02-15 22:42:40

问题在于DropObjectsNotInSource=True的使用,它会覆盖DropStatisticsNotInSource=False选项。这可能是一个错误,或者没有在sqlpackage.exe文档中指定。

一种可能的解决方法是使用Ed Elliott的AgileSqlClub SSDT过滤器,如this blog中所述。在这种情况下,您需要使用AgileSqlClub.SqlPackageFilter.dll并添加以下选项:

/p:AdditionalDeploymentContributors=AgileSqlClub.DeploymentFilterContributor /p:AdditionalDeploymentContributorArguments="SqlPackageFilter=IgnoreType(Statistics)"

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42691811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档