Lors de la construction, nous générons des fichiers dacpac de notre base de données en fonction d'un SSDT .sqlproject. Ce dacpac est ensuite déployé en production à l'aide de sqlpackage. Malgré l'utilisation du commutateur/p: DropStatisticsNotInSource = False, sqlpackage supprimera toutes les statistiques ajoutées après la dernière synchronisation du projet sql avec la base de données de production.SSDT/SqlPackage abandonne les statistiques
Nous pouvons également reproduire cela en utilisant un profil de publication et l'option Générer script de 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>
Comment pouvons-nous forcer sqlpackage ne pas faire tomber les statistiques?
La vérification réelle est de vérifier le script généré, pas les paramètres qui lui sont transmises. Que fait le script? Est-ce que 'DropObjectsNotInSource' est intentionnellement défini sur' True'? –
Exécutez la dernière version de sqlpackage.exe (dacfx) sur le serveur de déploiement? – ErikEJ
@PanagiotisKanavos Oui, nous voulons vraiment supprimer les tables, les colonnes et les procédures stockées dans notre base de données Je cours VS2015 avec le dernier SSDT installé et a également essayé VS2017. Les deux produisent le même script de migration (avec DROP STATISTICS xyz.abc) –