EF Code First CREATE DATABASE 权限在数据库“主”中被拒绝
Posted
技术标签:
【中文标题】EF Code First CREATE DATABASE 权限在数据库“主”中被拒绝【英文标题】:EF Code First CREATE DATABASE permission denied in database 'master' 【发布时间】:2016-12-17 21:23:33 【问题描述】:我首先使用代码来创建和更新数据库。我在包管理器中的更新数据库命令一直工作到昨天。但是今天它不工作并且有这个错误: 数据库“master”中的 CREATE DATABASE 权限被拒绝。 我没有对连接字符串和其他配置进行任何更改。 所以我尝试将数据库更新到我的系统和 Windows 上的另一个项目,我可以毫无问题地重新创建和更新这个数据库。 你能帮我解决这个错误吗?
这是我有问题的项目的连接字符串:
<add name="Default" connectionString="Server=.\sqlexpress; Database=test1; User Id=sa; Password=123456" providerName="System.Data.SqlClient" />
这是我没有问题的项目的连接字符串:
<add name="Default" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=test2;user id=sa;password=123456" providerName="System.Data.SqlClient" />
【问题讨论】:
【参考方案1】:我找到了解决办法。
我在解决方案中有 4 个项目。但是当我尝试更新数据库时,Web 项目没有设置为启动项目。所以我将这个项目设置为启动项目,我可以更新数据库。
【讨论】:
【参考方案2】:创建数据库:
打开 Security 文件夹,然后打开 Logins 文件夹并选择要在其下创建数据库的用户帐户。 打开帐户的属性,选择服务器角色选项卡,然后选择 dbcreator 复选框(系统管理员工作得更好)。 您也可以在使用标准管理员帐户 sa 登录时尝试创建数据库。
【讨论】:
您好,亲爱的。谢谢您的回答。但你可以看到,我使用“sa”用户,它拥有创建数据库的所有权限。我也将此用户用于另一个项目,它没有错误!!! @masoudnoursaid 所以我认为你的问题已经解决了。【参考方案3】:要在数据库服务器上创建数据库,您必须具有权限。因此,您使用的用户名必须具有在服务器上创建数据库的权限。您的数据库管理员 (DBA) 将授予您执行此操作的权限。
在开发环境中,您可以使用sa
帐户,该帐户拥有在服务器上做任何事情的所有权限。更好的是,如果您使用 localdb
进行开发,因为它非常轻量级且对开发人员友好。
所以,基本上您需要获得许可才能在您的服务器中创建数据库。希望对您有所帮助。
【讨论】:
您好,亲爱的。谢谢您的回答。但你可以看到,我使用“sa”用户,它拥有创建数据库的所有权限。我也将此用户用于另一个项目,它没有错误!!!【参考方案4】:您可以使用SA
或者您可以将其(您的帐户)添加到dbcreator
或sysadmin
角色。
sp_dropsrvrolemember 'Youraccount','sysadmin'
或
sp_dropsrvrolemember 'youraccoount','dbcreator'
【讨论】:
您好,亲爱的。谢谢您的回答。但你可以看到,我使用“sa”用户,它拥有创建数据库的所有权限。我也将此用户用于另一个项目,它没有错误!!!以上是关于EF Code First CREATE DATABASE 权限在数据库“主”中被拒绝的主要内容,如果未能解决你的问题,请参考以下文章
EF6.1.1的code first开发,出现异常: System.Data.Entity.SqlServer.SqlProviderServices, 悬赏50分
EF 连接 mysq l数据库 code first模式 的实践