1

我不是 sql server 人,但我正在开发客户端的应用程序,并希望首先通过 EF 代码连接到数据库

我的异常消息是

底层提供者打开失败

异常详情

无法打开登录请求的数据库 [DatabaseName]。登录失败

用户“IIS APPPOOL\ASP.NET v4.0”登录失败

我的网络配置

<add name="TraininGoDB"
    providerName="System.Data.SqlClient"
    connectionString="Server=LOCALPCNAME\SQLEXPRESS;Database=[DATABASENAME];Integrated Security=True;"/>

EF 上下文和实体在一个单独的项目中定义,应用程序配置如下

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.3.1.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="Data Source=(localdb)\v11.0; Integrated Security=True; MultipleActiveResultSets=True" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>
</configuration>

我正在使用 SQL Server Express 2008

不知道来自数据库配置或网络配置的问题

4

2 回答 2

1

运行 Web 应用程序池(与您的 Web 应用程序关联)的用户无权访问您的数据库。您需要授予它权限或在另一个具有权限的用户下运行。因此,总结一下:检查您的应用程序池在哪个用户下运行,然后检查该用户是否有权访问您的数据库。

于 2012-06-05T12:32:00.280 回答
0

如果您的所有 Web.config 文件都正确,SQLSERVER 具有适当的权限等,您还可以检查一件事。当客户让我配置项目以使 Entity Framework 不会自动删除数据库(例如,如果模型发生更改)时,我曾经遇到过这个问题,但我仍在 localhost 上测试项目。因此,我需要创建一个新数据库,但我忘了修复我的上下文文件。例如,我的问题是:

public MasterContext(string nameOrConnectionString) : base(nameOrConnectionString)
    {
        Database.SetInitializer<MasterContext>(null);
    }

什么时候应该(为了测试):

public MasterContext(string nameOrConnectionString) : base(nameOrConnectionString)
    {
        Database.SetInitializer<MasterContext>(new DropCreateDatabaseIfModelChanges<MasterContext>());

    }

否则,我会收到相同的错误,即底层提供程序在打开时失败,内部异常是用户登录失败。

于 2015-10-06T16:13:38.963 回答