asp mvc 3 noobie:在数据库' master'中拒绝CREATE DATABASE权限

时间:2012-08-13 16:15:39

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

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

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

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

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服务器端的权限问题吗?我很困惑,为什么我得到一个Create database错误,因为DB已经存在。
  2. 我是否收到此错误b / c我已经创建了数据库?脚手架是否想以某种方式创建数据库?

4 个答案:

答案 0 :(得分:4)

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

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

See this post for additional information

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:0)

USE大师; 执行sp_addsrvrolemember @loginame = N' YourAppUserLogin',@ rolename = N' dbcreator';

答案 3 :(得分:0)

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

在您的应用程序中使用此连接字符串