我应该如何处理数据库项目中的用户?

Posted

技术标签:

【中文标题】我应该如何处理数据库项目中的用户?【英文标题】:How should I handle users in database projects? 【发布时间】:2014-11-18 21:32:01 【问题描述】:

我们有两个环境 - 开发环境和生产环境。

我们在开发环境中的用户组与生产环境中的用户组不同,但在数据库项目中似乎没有一种很好的方式来表示这一点 - 每当我们部署它时,都会清除现有用户,并且我们只能有一组 - 生产用户或开发用户。

我曾想过包含基于 SQLCMD 变量切换的脚本以创建适当的用户,但这似乎很讨厌。

我觉得我错过了数据库项目的某些部分,因为这种情况似乎在任何地方都会出现。数据库项目是否有能力处理在不同环境中创建不同的用户/角色成员集?

existing question about 2008R2 似乎表明没有,但我乐观地认为 2012 年可能会发生一些变化以提供此功能。

【问题讨论】:

How to handle users and logins in Visual Studio Database Project?的可能重复 @JohnSaunders 这个问题是针对 2008 年的;这是2012年的。答案相同的事实是无关紧要的。正如我的问题中提到的...... 嗯,不,这不是无关紧要的。这是相同的答案,因为它是 SSDT/数据库项目从那时起就没有改变的领域。在 Microsoft 解决这一缺陷之前,我们不需要针对每个不同版本的 SSDT 提出新问题。 我不明白为什么。我来到该网站,看到那个答案并想“嗯,根据标签,这是专门针对 2008 年的。2012 年也是如此吗?”可能应该重新处理该问题,因此它是一个一般性问题(删除标签),但就目前而言,它们不是重复的 - 该问题的答案没有回答我的问题。 【参考方案1】:

遗憾的是,这是 SSDT 缺乏的一个领域。您需要以不同的方式构建您的权限和用户。我已经写下了我们在这里使用的方法(并为 Jamie Thomson 提供了支持):http://schottsql.blogspot.com/2013/05/ssdt-setting-different-permissions-per.html

基本上,我们在一系列脚本中构建权限,并根据传递给 SQLPackage 命令的变量应用它们。这也为我们在其他领域提供了一些灵活性,例如不在这些环境中运行某些脚本,但第一次设置很痛苦。

【讨论】:

很酷,所以自从你回答了其他问题以来并没有太大变化:(无论如何感谢你的回答。 可悲的是,一点也不多。显然,如果 SSDT 在所有环境中都保持一致,则使用 SSDT 管理用户/登录会更容易,但如果它们不同,则不会。但是,我确实尝试将我所有的经验结合到一篇博客文章中,以使其更容易组合起来。在此过程中,我还稍微调整了脚本。

以上是关于我应该如何处理数据库项目中的用户?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理Zuul中的hystrix后备?

如何处理组小计,例如WPF DataGrid 中的目标行?

如何处理大数据库?

我应该如何处理 Window Phone / WCF / ASP.NET MVC 应用程序的用户身份?

如何处理数据库中的配方成分

如何处理数据库中用户的身份验证/授权?