我有一个使用本地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目录中的数据库位置。 提供程序尝试自动创建应用程序 服务数据库因为提供者确定了数据库 不存在。以下配置要求是必需的 成功检查是否存在应用程序服务 数据库并自动创建应用服务数据库:
- 如果应用程序在Windows 7或Windows Server上运行 2008R2,启用特殊配置步骤 自动创建提供者数据库。附加信息 可在以下网址获得:http://go.microsoft.com/fwlink/?LinkId=160102。如果 应用程序的App_Data目录尚不存在,即Web 服务器帐户必须具有对应用程序的读写访问权限 目录。这是必要的,因为Web服务器帐户将 如果还没有,则自动创建App_Data目录 存在。
- 如果应用程序的App_Data目录已存在,则为web 服务器帐户只需要读取和写入权限 应用程序的App_Data目录。这是必要的,因为网络 服务器帐户将尝试验证Sql Server Express 数据库已存在于应用程序的App_Data目录中。 从Web服务器撤消对App_Data目录的读访问权限 帐户将阻止提供商正确确定是否 Sql Server Express数据库已经存在。这将导致错误 当提供程序尝试创建已经的副本时 现有数据库。由于Web服务器,因此需要写访问权限 创建新数据库时使用帐户凭据。
- 必须在计算机上安装Sql Server Express。
- Web服务器帐户的进程标识必须具有本地用户配置文件。有关如何创建的详细信息,请参阅自述文档 机器和域帐户的本地用户配置文件。
醇>
我不明白如何排查4.
(我在哪里可以找到“自述文件”?)。但是,其他项目对我来说是正确的。
...具体
有趣的是,如果我从开发机器复制 ASPNETDB.MDF和ASPNETDB.LDF到生产App_Data,则错误会发生变化:
发生与网络相关或特定于实例的错误 建立与SQL Server的连接。找不到服务器或 无法访问。验证实例名称是否正确 SQL Server配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 查找服务器/实例时出错 已指定)描述:期间发生未处理的异常 执行当前的Web请求。请查看堆栈跟踪 有关错误及其来源的更多信息 码。
异常详细信息:System.Data.SqlClient.SqlException:A 建立时发生与网络相关或特定于实例的错误 与SQL Server的连接。服务器未找到或未找到 无障碍。验证实例名称是否正确以及SQL 服务器配置为允许远程连接。 (提供者:SQL 网络接口,错误:26 - 查找服务器/实例时出错 指定)
我错过了什么?
答案 0 :(得分:0)
之前我遇到了同样的错误,问题是我的SQL Server服务已停止,这很奇怪但有时它们只是崩溃,我不得不重新安装SQL Server导致服务甚至没有让我启动它,所以你可能想检查一下。
答案 1 :(得分:0)
我最终将相关表移动到新的SQL Server数据库,因为我无法解决权限问题。
这对于生产应用程序无论如何都是推荐的方法,尽管看起来很不幸(在确定如何配置安全性方面)以便为非常低容量的网站部署ASPNETDB.MDF变体。