SqlPackage.exe部署的dacpac中创建用户导致登录失败SqlException

Lie*_*ero 5 sql-server database-project dacpac sqlpackage sql-server-2016

问题

我正在尝试自动化 SQL 部署,包括用户和角色。当我在 Sql Management Studio 中创建用户时它可以工作,但是当我部署 dacpack 时我得到 SqlException: Login Failed for user 'MyUser'

描述

  1. 我在本地主机上安装了 SQL Server 2016,同时启用了 Sql Server 和 Windows 身份验证。

  2. 我在 Visual Studio 中有包含这些文件的 Sql 数据库项目:

  3. 我构建它并使用命令行部署创建的 dacpac:

    SqlPackage.exe /Action:Publish
                   /SourceFile:"MyDatabase.dacpac" 
                   /Profile:"MyDatabase.publish.xml"
                   /v:MyUserPassword=c2Aaaaaaaaaaaa`
    
    Run Code Online (Sandbox Code Playgroud)

当我在 sql management studio 中执行此脚本时,它会起作用。但是当我使用 SqlPackage 部署它时,它会导致

SqlException: 用户“MyUser”登录失败

编辑:

我调查了生成的 sql 脚本,其中包括REVOKE CONNECT

CREATE USER [MyUser]
    WITH PASSWORD = N'c2Aaaaaaaaaaaa';


GO
REVOKE CONNECT TO [MyUser];
EXECUTE sp_addrolemember @rolename = N'db_datareader', @membername = N'MyUser;
EXECUTE sp_addrolemember @rolename = N'db_datawriter', @membername = N'MyUser';
Run Code Online (Sandbox Code Playgroud)

如何防止生成 REVOKE CONNECT 行