从sqlpackage中排除ojects/object类型,是否可能?

SAS*_*SAS 4 sql-server-data-tools

我想从"sqlpackage.exe"的提取或发布操作中排除某些对象,例如所有登录和用户.这可以在Visual Studio中实现,所以我希望它也可以来自sqlpackage exe ..或者它不可能吗?原因是我希望能够自动部署到登录和用户不同的各种环境/服务器.

登录和用户只是一个例子,问题更为笼统.

小智 5

我通过创建一个 DeploymentPlanModifier 贡献者(遵循他们的SchemaBasedFilter示例)解决了这个问题,我在SQLPackage.exe的参数 ( /p:AdditionalDeploymentContributors ) 中传递了该贡献者,它会查找安全对象类型的任何删除操作。

(使用 SqlPackage.exe 发布 DACPAC 时防止删除用户的代码)


Pet*_*ott 4

此时,您最好的选择是考虑在部署后脚本中执行此操作,并从项目中排除所有登录名/用户。我们也遇到类似的问题,每个环境都有一组不同的登录/用户,而 SSDT 不能很好地处理这个问题。我在我的博客上写了我们使用的流程(大量借鉴了 Jamie Thomson)。

http://schottsql.blogspot.com/2013/05/ssdt-setting- different-permissions-per.html

我还要注意到,用户“pavelz”留下了一条评论,简要描述了他们使用复合项目的过程 - 用于对象的主项目和用于权限的子项目。那也可以。

我们在部署后过程中遇到的唯一问题是,如果您启用发布来删除不在项目中的权限/登录,则可能会需要一些停机时间,直到最后重新添加权限。设置后,我强烈建议关闭这些选项。