Problem
我正在尝试自动化 SQL 部署,包括用户和角色。当我在 Sql Management Studio 中创建用户时它可以工作,但是当我部署 dacpack 时,我得到 SqlException: Login Failed for user 'MyUser'
描述
我在本地主机上安装了 SQL Server 2016,并启用了 Sql Server 和 Windows 身份验证。
-
我在 Visual Studio 中有包含以下文件的 Sql 数据库项目:
-
MyUser.sql [构建操作=构建]
CREATE USER [MyUser] WITH Password='$(MyUserPassword)';
-
RolesMembership.sql [构建操作=构建]
ALTER ROLE [db_datareader] ADD MEMBER [MyUser]
GO
ALTER ROLE [db_datawriter] ADD MEMBER [MyUser]
-
我构建它并使用命令行部署创建的 dacpac:
SqlPackage.exe /Action:Publish
/SourceFile:"MyDatabase.dacpac"
/Profile:"MyDatabase.publish.xml"
/v:MyUserPassword=c2Aaaaaaaaaaaa`
当我在 sql Management Studio 中执行此脚本时它起作用。但是当我使用 SqlPackage 部署它时,它会导致
SqlException:用户“MyUser”登录失败
EDIT:
我研究了生成的 sql 脚本并包含撤销连接:
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';
如何防止生成 REVOKE CONNECT 线
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)