2

I'm deploying an (Azure) SQL Server Database using a DACPAC. Every time I deploy it's dropping my users, roles, and permissions even though I'm explicitly telling it not to in the publishing profile I'm using.

The publishing profile is defined as

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <IncludeCompositeObjects>True</IncludeCompositeObjects>
    <TargetDatabaseName>neonbliss</TargetDatabaseName>
    <DeployScriptFileName>Neon Bliss Storefront Database.sql</DeployScriptFileName>
    <BlockOnPossibleDataLoss>True</BlockOnPossibleDataLoss>
    <DropObjectsNotInSource>True</DropObjectsNotInSource>
    <ProfileVersionNumber>1</ProfileVersionNumber>
    <DatabaseEdition>Basic</DatabaseEdition>
    <DatabaseServiceObjective>Basic</DatabaseServiceObjective>
    <DatabaseMaximumSize>2</DatabaseMaximumSize>
    <DoNotDropRoleMembership>True</DoNotDropRoleMembership>
    <DoNotDropUsers>True</DoNotDropUsers>
    <DoNotDropPermissions>True</DoNotDropPermissions>
    <DoNotDropSecurityPolicies>True</DoNotDropSecurityPolicies>
    <ExcludeUsers>True</ExcludeUsers>
    <ExcludeSecurityPolicies>True</ExcludeSecurityPolicies>
    <ExcludeDatabaseRoles>True</ExcludeDatabaseRoles>
    <IgnorePermissions>True</IgnorePermissions>
    <TreatVerificationErrorsAsWarnings>True</TreatVerificationErrorsAsWarnings>
  </PropertyGroup>
</Project>

Has anyone seen this?

Anthony Mattas
  • 271
  • 1
  • 12

1 Answers1

2

This has been an ongoing DACPAC issue, presumably with the DropObjectsNotInSource overriding all other flags indiscriminately.

If you don't want to specifically add the security objects into your SSDT package, then since the publishing profile isn't sticking like you need, you'll need to adjust the arguments of SQLPackage.exe with...

/p:ExcludeObjectTypes=Users;Logins;RoleMembership;Permissions
JeffRamos
  • 843
  • 4
  • 15
  • 1
    Thanks! I added that to my DevOps pipeline, and will give it a shot today. Assuming this will work so marking it as the answer. – Anthony Mattas Jan 19 '21 at 13:35