IIS 7无法创建ASPNETDB.MDF

时间:2012-03-13 00:47:32

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

我有一个使用本地SQL Server Express数据库(a.k.a。〜/ 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   服务器帐户必须具有对应用程序的读写访问权限   目录。这是必要的,因为Web服务器帐户将   如果还没有,则自动创建App_Data目录   存在。
  2.   
  3. 如果应用程序的App_Data目录已存在,则为web   服务器帐户只需要读取和写入权限   应用程序的App_Data目录。这是必要的,因为网络   服务器帐户将尝试验证Sql Server Express   数据库已存在于应用程序的App_Data目录中。   从Web服务器撤消对App_Data目录的读访问权限   帐户将阻止提供商正确确定是否   Sql Server Express数据库已经存在。这将导致错误   当提供程序尝试创建已经的副本时   现有数据库。由于Web服务器,因此需要写访问权限   创建新数据库时使用帐户凭据。
  4.   
  5. 必须在计算机上安装Sql Server Express。
  6.   
  7. Web服务器帐户的进程标识必须具有本地用户配置文件。有关如何创建的详细信息,请参阅自述文档   机器和域帐户的本地用户配置文件。
  8.   

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

...具体

  1. 有问题的应用程序池正在以NETWORK SERVICE(非应用程序池标识)
  2. 运行
  3. 用户NETWORK SERVICE具有对App_Data的完全控制(我是否正确理解它不需要为App_Data的父级进行读/写,因为已经创建了App_Data?)
  4. 有趣的是,如果我从开发机器复制 ASPNETDB.MDF和ASPNETDB.LDF到生产App_Data,则错误会发生变化:

      

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

         

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

    我错过了什么?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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