【问题标题】:C# - CREATE DATABASE permission denied in database 'master' (EF - code first)C# - 数据库“主”中的 CREATE DATABASE 权限被拒绝(EF - 代码优先)
【发布时间】:2015-12-30 22:26:34
【问题描述】:

我在这里看到了一些答案,但没有任何帮助解决问题。

我正在关注 MVC Jumpstart 上的 Microsoft ITAcademy 教程,他们通过使用 EF Code-First 方法的示例进行教学。

当我运行应用程序时,我收到一个错误:

数据库“master”中的 CREATE DATABASE 权限被拒绝

这是我的连接字符串:

<add name="DefaultConnection" 
     connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-Conference-20150930151714;Integrated Security=true" 
     providerName="System.Data.SqlClient" />`

我不会在这里发布所有代码,因为它是逐行通过 Microsoft 教程完成的。

当我调用应该从数据库中检索数据的控制器之一时它失败了:

public ActionResult Index()
{
    return View(db.Speakers.ToList());//fails here with described exception
}

这就是DatabaseGlobal.asax.cs 中的初始化方式:

using System.Data.Entity;    
public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        Database.SetInitializer<ConferenceContext>(new ConferenceContextInitializer());
        //the rest of code....// 
    }
}

这是ConferenceContext类:

using System.Data.Entity;
public class ConferenceContext : DbContext
{
    //public ConferenceContext() : base("name = DefaultConnection") { }
    public DbSet<Session> Sessions { get; set; }
    public DbSet<Speaker> Speakers { get; set; }
}

这是给Database添加虚拟数据的一段代码:

public class ConferenceContextInitializer : DropCreateDatabaseAlways<ConferenceContext>
{
    protected override void Seed(ConferenceContext context)
    {
        context.Sessions.Add(
            new Session()
            {
                Title = "I want Spaghetti",
                Abstract = "The life and times of spaghetti lover",
                Speaker = context.Speakers.Add(
                    new Speaker()
                    {
                        Name = "John Doe",
                        EmailAddress = "john.doe@test.com"
                    })
            });
        context.SaveChanges();
    }
}

你能解释一下应该在哪里创建数据库吗?

我应该对我的SQL Server 拥有特殊权限,还是只需要在App_Data 文件夹中创建一个数据库?

我可以在我的工作PC 上创建数据库吗?

【问题讨论】:

  • 你能不能试着取消注释这一行,看看会发生什么'//public ConferenceContext() : base("name = DefaultConnection") { }'
  • 进入 SSMS 并在 SQLEXPRESS 实例中创建一个数据库。您当前的连接字符串希望将其称为“aspnet-Conference-20150930151714”,但您可能只想将其称为“aspnetdemo”或简单的名称。如果您无法在 Management Studio 中创建它,则说明存在权限问题。另一种选择是使用 LocalDb msdn.microsoft.com/en-us/library/hh510202(v=SQL.110).aspx
  • 问题是数据库必须在代码运行时自动创建。我不必自己创建它。我想,我没有创建数据库的权限

标签: c# asp.net-mvc ef-code-first


【解决方案1】:

您需要为您的帐户授予全局服务器权限才能在服务器上创建数据库。

【讨论】:

  • 那么,基本上,我需要联系我的网络管理员给我权限?数据库是在 SQL Server 中创建的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-19
  • 1970-01-01
  • 2016-12-17
  • 2023-03-05
  • 1970-01-01
  • 2014-10-20
相关资源
最近更新 更多