【问题标题】:IIS 7 Cannot Create ASPNETDB.MDFIIS 7 无法创建 ASPNETDB.MDF
【发布时间】:2012-03-13 00:47:31
【问题描述】:

我有一个使用本地 SQL Server Express 数据库(又名 ~/App_Data/ASPNETDB.MDF)的 Web 应用程序。

当我在 Windows 2008 Standard (SP2) 上部署到 IIS 7.0 时,我收到错误:

发生网络相关或特定于实例的错误,同时 建立与 SQL Server 的连接。找不到服务器或 无法访问。验证实例名称是否正确,并且 SQL Server 配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 定位服务器/实例时出错 指定)

错误信息继续提供一些建议

SQLExpress 数据库文件自动创建错误:

连接字符串指定一个本地 Sql Server Express 实例 使用应用程序的 App_Data 目录中的数据库位置。 提供者试图自动创建应用程序 服务数据库,因为提供商确定该数据库 不存在。以下配置要求是必要的 成功检查应用程序服务是否存在 数据库并自动创建应用服务数据库:

  1. 如果应用程序在 Windows 7 或 Windows Server 上运行 2008R2,需要特殊的配置步骤才能启用 自动创建提供者数据库。附加信息 可在:http://go.microsoft.com/fwlink/?LinkId=160102 获得。如果 应用程序的 App_Data 目录尚不存在,网络 服务器帐户必须具有对应用程序的读写权限 目录。这是必要的,因为 Web 服务器帐户将 如果尚未创建 App_Data 目录,则自动创建 存在。
  2. 如果应用程序的 App_Data 目录已存在,则 Web 服务器帐户只需要对 应用程序的 App_Data 目录。这是必要的,因为网络 服务器帐户将尝试验证 Sql Server Express 数据库已存在于应用程序的 App_Data 目录中。 从 Web 服务器撤消对 App_Data 目录的读取访问权限 帐户将阻止提供者正确确定 Sql Server Express 数据库已经存在。这将导致错误 当提供者试图创建一个已经存在的副本时 现有数据库。需要写入权限,因为 Web 服务器 创建新数据库时使用帐户的凭据。
  3. 必须在计算机上安装 SQL Server Express。
  4. Web 服务器帐户的进程标识必须具有本地用户配置文件。有关如何创建 机器和域帐户的本地用户配置文件。

我不明白如何解决4. 的问题(在哪里可以找到“自述文件”?)。但是,其他项目在我看来是正确的。

具体...

  1. 有问题的应用程序池作为网络服务(不是应用程序池标识)运行
  2. 用户 NETWORK SERVICE 对 App_Data 具有完全控制权(我是否正确理解它不需要对 App_Data 的父级进行读/写,因为 App_Data 已经创建?)

有趣的是,如果我将 ASPNETDB.MDF 和 ASPNETDB.LDF 从我的开发机器复制到生产 App_Data,错误会发生变化:

发生网络相关或特定于实例的错误,同时 建立与 SQL Server 的连接。找不到服务器或 无法访问。验证实例名称是否正确,并且 SQL Server 配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 定位服务器/实例时出错 指定)描述:在执行过程中发生未处理的异常 执行当前的 Web 请求。请查看堆栈跟踪 有关错误及其起源的更多信息 代码。

异常详细信息:System.Data.SqlClient.SqlException:A 建立时发生与网络相关或特定于实例的错误 到 SQL Server 的连接。未找到或未找到服务器 无障碍。验证实例名称是否正确以及 SQL 服务器配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 定位服务器/实例时出错 指定)

我错过了什么?

【问题讨论】:

    标签: asp.net-mvc-3 deployment iis-7


    【解决方案1】:

    我之前也遇到过同样的错误,问题是我的 SQL Server 服务已停止,这很奇怪,但有时它们会崩溃,我不得不重新安装 SQL Server,因为该服务甚至没有让我启动它,所以你可能想检查一下。

    【讨论】:

    • 好点,但对我来说不是这样。该服务正在运行,我还可以在 SSMS 中附加从开发机器复制过来的 .MDB 文件。
    【解决方案2】:

    我最终将相关表移动到新的 SQL Server 数据库,因为我无法解决权限问题。

    无论如何,对于生产应用程序来说,这是推荐的方法,尽管不幸的是,为非常低容量的网站部署 ASPNETDB.MDF 变体非常困难(在确定如何配置安全性方面)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多