我想排除某些对象,例如所有登录&用户,来自sqlpackage.exe
的提取或发布操作。
这可以在Visual Studio中实现,所以我希望sqlpackage.exe
也可以。
或者不可能?
原因是我希望能够自动部署到各种环境/服务器,其中登录&用户不同。
注意:登录&用户只是一个例子,问题更为笼统。
答案 0 :(得分:7)
现在。请更新工具并查看此帖子。
答案 1 :(得分:4)
我通过在SQLPackage.exe的参数(SchemaBasedFilter)中传入一个DeploymentPlanModifier参与者(跟随他们的/p:AdditionalDeploymentContributors示例)解决了这个问题,它查找了任何删除操作安全对象类型。
(Prevent dropping of users when publishing a DACPAC using SqlPackage.exe上的代码)
答案 2 :(得分:3)
此时您最好的选择是在部署后脚本中执行此操作,并从项目中排除所有登录/用户。我们有类似的问题,每个环境都有不同的登录/用户集,而SSDT只是不能很好地处理这个问题。我写过关于我们在博客上使用的过程(大量借用Jamie Thomson)。
http://schottsql.blogspot.com/2013/05/ssdt-setting-different-permissions-per.html
我还会注意到用户“pavelz”留下了一条评论,简要描述了他们使用w /复合项目的过程 - 对象的主项目和权限的子项目。这也可以。
我们在部署后流程中遇到的唯一问题是,如果您启用发布以删除不在项目中的权限/登录,则可能会有一些停机时间,直到最后重新添加权限。一旦设置,我强烈建议关闭这些选项。
答案 3 :(得分:1)
Visual Studio中可用的所有相同选项都可以在SqlPackage.exe中使用。有关可以传递的选项的完整列表,请参阅the documentation中的“发布参数,属性和SQLCMD变量”。它们通常看起来像“/ p:IgnoreUserSettingsObjects = True”,并在调用SqlPackage时与常规参数一起传递。
答案 4 :(得分:1)
可悲的是,截至目前,sqlpackage.exe实用程序没有任何排除特定对象的选项。但是,它确实有排除整个对象类型的选项。