【问题标题】:asp mvc 3 noobie: CREATE DATABASE permission denied in database 'master'asp mvc 3 noobie:数据库'master'中的CREATE DATABASE权限被拒绝
【发布时间】:2012-08-09 21:56:21
【问题描述】:

我是一个 asp mvc 3 noobie。我已经完成了一些tutorials,现在我准备通过尝试建立一个站点来继续学习。

在所有教程中,您都连接到 SQL CE 或 SQL Express DB。但我希望我的网站在 sql server 上建立一个数据库。

我在我的联网服务器上创建了一个名为 MyDB 的数据库。然后我在我的网络配置文件中设置我的连接字符串,如下所示:

add name="ApplicationServices"
    connectionString="Data Source=Server\ServerInstance;Initial Catalog=MyDB;Integrated Security=True"
    providerName="System.Data.SqlClient"

我创建了模型和脚手架控制器。

我像这样创建了一个简单的DataBaseContext:

Imports System.Data.Entity

Public Class DatabaseContext
    Inherits DbContext

    Public Property Employee As DbSet(Of Employee)
    Public Property AnnualLeave As DbSet(Of AnnualLeave)

End Class

但是当我在脚手架控制器中点击以下行时,我得到了错误:

 Function Index() As ViewResult
    Return View(db.Employee.ToList()) //CREATE DATABASE permission denied in database 'master'`.
 End Function
  1. 是否应该通过更改 MyDB 数据库的权限来解决此问题?这是 SQL 服务器端的权限问题吗?我很困惑为什么会因为数据库已经存在而收到创建数据库错误。
  2. 我是否收到此错误 b/c 我已经创建了数据库?脚手架是否想以某种方式创建数据库?

【问题讨论】:

  • 听起来它正在尝试通过错误消息创建新数据库。我猜您首先在您的项目中使用 EF 代码,并使用它的迁移功能来构建您的数据库。检查 EF 上下文的设置以确保它正在使用您的连接字符串。
  • @sannee 感谢您的帮助。在哪里检查 EF 上下文的设置以确保它正在使用您的连接字符串?
  • @sannee 再次感谢。在那篇文章之后,我更改了连接字符串的名称以匹配数据上下文的名称。这给我带来了一个新的错误信息......进步!如果你想用这个的 jist 写一个答案(确保连接字符串的名称与数据上下文匹配)我会接受。
  • 很酷希望对您有所帮助!我添加了一个反映此对话的答案。

标签: sql-server asp.net-mvc asp.net-mvc-3


【解决方案1】:

听起来它正在尝试通过错误消息创建新数据库。我猜您首先在您的项目中使用 EF 代码,并使用它的迁移功能来构建您的数据库。检查 EF 上下文的设置以确保它正在使用您的连接字符串。

连接字符串或其名称可以传递给 DbContext 的构造函数。如果您使用默认构造函数,它会搜索与派生上下文类名称相同的连接字符串。基本上,请确保您的连接字符串与派生的 dbcontext 类具有相同的名称,并且应该可以找到它。

See this post for additional information

【讨论】:

【解决方案2】:

1.您需要将IIS应用池标识设置为ASP.NET集成模式。

2.在 SQL Server 中为 IIS APPPOOL\ASP.NET 添加登录。

3.在SQL Server中,设置IIS APP POOL登录为dbcreator角色。

【讨论】:

  • 我不想让它创建一个数据库。我从现有数据库创建模型并发布到服务器它给了我这个错误。我什至没有使用任何首字母缩写词
  • 这是唯一对我有用的解决方案。但是你的答案应该是准确的。您需要添加的登录名是 IIS APPPOOL\{apppool name of your site}
【解决方案3】:

使用主人; 执行 sp_addsrvrolemember @loginame = N'YourAppUserLogin', @rolename = N'dbcreator';

【讨论】:

    【解决方案4】:

    <add name="Default" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=test2;user id=sa;password=123456" 
    providerName="System.Data.SqlClient" />

    将此连接字符串用于您的应用程序

    【讨论】:

      猜你喜欢
      • 2011-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      • 2020-06-19
      • 1970-01-01
      相关资源
      最近更新 更多