VS 数据库项目用户创建错误
Posted
技术标签:
【中文标题】VS 数据库项目用户创建错误【英文标题】:VS Database Project User Creation Error 【发布时间】:2015-06-09 17:53:01 【问题描述】:我正在尝试针对 SQLExpress 实例在本地发布以测试 VS 数据库项目的发布能力,并且我遇到了一个错误,它试图创建数据库中已经存在的用户。用户创建不是t 被包裹在 IF EXISTS 中,我没有看到任何类型的设置来控制或强制执行此操作。
具体来说,它是在抛出: 正在创建 [xyz\abc46518]... (208,1): SQL72014: .Net SqlClient 数据提供者: Msg 15063, Level 16, State 1, Line 1 登录已经有一个不同用户名下的帐户。 (208,0):SQL72045:脚本执行错误。执行的脚本: 为登录 [xyz\abc46518] 创建用户 [xyz\abc46518];
虽然脚本的其他部分有“IF EXISTS”和“IF NOT EXISTS”,但脚本的这一部分没有。
我希望能够将此作为脚本的一部分来控制数据库中的用户。如果有人选择授予访问权限并且它不在源代码中,那么在我们部署时它就会消失。
【问题讨论】:
我们放弃了原生的“用户”支持并推出了我们自己的支持,这在很大程度上基于 Jamie Thomson 的一些工作。这会将所有权限和用户置于部署后脚本中。 schottsql.blogspot.com/2013/05/… 你能在用户脚本中加入'IF NOT EXISTS'吗? 【参考方案1】:我开始使用数据库项目,它们很棒,除了用户权限。 我对我们的数据库只有 dba 权限,而处理登录是在服务器级别。
所以在创建数据库项目时,我会生成以下代码:
为登录创建用户 [用户名]
当我去构建项目时会出错。
好吧,我想要用户,但不想麻烦地跟踪部署后的脚本,主要是因为它们破坏了我可爱的 TFS 结构。
我的解决方案,有点hack,我没有创建用户,而是创建了一个同名的角色:
创建角色 [用户名] 授权[dbo];
现在我可以为我的对象分配权限给用户(我知道所有的访问都应该通过角色,但它不是我的数据库,所以我很乐意破解)
我们从不自己部署角色,因此对于我们开发人员来说,角色或用户并不重要。
【讨论】:
以上是关于VS 数据库项目用户创建错误的主要内容,如果未能解决你的问题,请参考以下文章