2011-10-06 122 views

回答

2

在有权在开发SQL服务器上创建数据库的帐户下运行您的应用程序。如果您正在使用SQL身份验证,请在具有此权限的连接字符串中为SQL登录指定凭证。默认情况下,SQL Server安装期间指定的管理员帐户具有此权限,但您也可以将其添加到其他登录。

+0

+1 - 也尝试以管理员身份运行Visual Studio。即使您自己的帐户具有管理员权限,我发现在使用本地数据库进行开发时,有必要在某些机器上执行此操作。 – ChrisBD

2

我曾经遇到过这个问题并解决了它。关键是使用SQL认证而不是Windows'。这是指定默认数据库的最清晰的方式。以这种方式

尝试连接字符串:

<add name="MFCConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\MFC.mdf;Initial Catalog=MFC;Integrated Security=false;User ID=sa;Password=123" 
    providerName="System.Data.SqlClient" /> 

记得从主集SA的默认数据库到MFC,并集成安全=假。 顺便说一句,sa通常是禁用的,所以首先在sql server management studio中启用并测试它。

+0

+1极大地改变了Windows身份验证 –

2

当找到错误的答案时,这可能对任何遇到这个问题的人都有用,就像我一样。这些步骤应该是您所需要的一切,我已经复制了代码,您可以粘贴以快速运行它。

我使用Code First,尝试使用'create-database',但在标题中出现错误。 关闭并重新打开(作为Admin这次) - 命令不被识别,但'update-database'被如此使用。同样的错误。

下面是我对解决这个问题的步骤:

1)打开SQL Server Management Studio并创建了一个数据库 “影片”

2)打开服务器资源管理器在VS2013(在 '查看')和连接到数据库。

3)右键单击连接 - >属性,并抓住连接字符串。

4)在web.config我添加的连接字符串

<connectionStrings> 
<add name="DefaultConnection" 
    connectionString="Data Source=MyMachine;Initial Catalog=Videos;Integrated Security=True" providerName="System.Data.SqlClient" 
    /> 
    </connectionStrings> 

5)如我设置的情况下,我需要引用DefaultConnection:

using System.Data.Entity; 

namespace Videos.Models 
{ 
public class VideoDb : DbContext 
{ 
    public VideoDb() 
     : base("name=DefaultConnection") 
    { 

    } 

    public DbSet<Video> Videos { get; set; } 
} 
} 

6)在包管理器控制台运行'update-database'来创建表格。

记住你可以用种子()在创建时插入值,在Configuration.cs:

 protected override void Seed(Videos.Models.VideoDb context) 
     { 
     context.Videos.AddOrUpdate(v => v.Title, 
      new Video() { Title = "MyTitle1", Length = 150 }, 
      new Video() { Title = "MyTitle2", Length = 270 } 
      ); 

     context.SaveChanges(); 
     } 
0

我有EF 6.0和代码首先同样的问题。如果您有多个具有不同连接字符串的项目并且从包管理器控制台运行update-database,即使您选择了正确的默认项目,Visual Studio也会从启动项目中读取连接字符串,因此如果在启动时没有连接项目然后错误是权限被拒绝..

您可以解决它通过设置正确的项目作为启动项目(只为updte数据库)。