使用SqlPackage.exe发布DACPAC时防止用户丢失

Mat*_*att 12 sql-server-data-tools

有没有办法阻止用户在使用SqlPackage.exe发布DACPAC时被删除,除了更改下面的设置,这可以防止所有对象在DACPAC中不被删除.

<DropObjectsNotInSource>True</DropObjectsNotInSource>
Run Code Online (Sandbox Code Playgroud)

我们部署到许多环境,每个环境都有不同的用户.目前的解决方法是:

  1. 为每个环境编写脚本,以便在部署后重新创建它们
  2. 使用/Action:Script并手动更改部署脚本.

虽然这些都不是理想的......

Tuu*_*emi 11

使用SqlPackage.exe参数(自2015年2月发行版:新的高级发布选项以指定要排除或不删除的对象类型):

这是我们在部署中使用的实际参数:

/p:DropObjectsNotInSource=True 
/p:ExcludeObjectTypes=Users;Logins;RoleMembership;Permissions
Run Code Online (Sandbox Code Playgroud)

第一行清除所有,但下一行进一步细化了不会掉落的东西.这种组合证明了我们最有效的方法是删除所有不必要的对象,同时保留登录映射.

可以从MSDN - SqlPackage.exe中找到所有参数及其可能值的详细文档