首页 > 解决方案 > SQL Server DACPAC 部署删除用户/角色/权限

问题描述

我正在使用 DACPAC 部署 (Azure) SQL Server 数据库。每次我部署它时,它都会删除我的用户、角色和权限,即使我在我正在使用的发布配置文件中明确告诉它不要这样做。

发布配置文件定义为

<?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>

有人见过这个吗?

标签: sql-server

解决方案


这是一个持续的 DACPAC 问题,大概是 DropObjectsNotInSource 不加选择地覆盖所有其他标志。

如果您不想专门将安全对象添加到您的 SSDT 包中,那么由于发布配置文件不像您需要的那样坚持,您需要调整 SQLPackage.exe 的参数...

/p:ExcludeObjectTypes=Users;Logins;RoleMembership;Permissions

推荐阅读