C# SQL Server:无法从本地网站连接(SQL网络接口,错误:26-定位指定的服务器/实例时出错)

C# SQL Server:无法从本地网站连接(SQL网络接口,错误:26-定位指定的服务器/实例时出错),c#,.net,sql-server-2008,visual-studio-2008,windows-7,C#,.net,Sql Server 2008,Visual Studio 2008,Windows 7,我正在使用VisualStudio2008和SQLServer2008Express开发一个网站。我参与了开发,所以代码是正确的,因为我的一些同事使用相同的工具正确地运行代码。问题是:一旦我运行了网站,我就无法使它与数据库进行通信。它们都在我本地的机器里。引发的错误是: 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问服务器。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。(提供程序:SQL网络接口,错误:26-定位指定的服务器/实

我正在使用VisualStudio2008和SQLServer2008Express开发一个网站。我参与了开发,所以代码是正确的,因为我的一些同事使用相同的工具正确地运行代码。问题是:一旦我运行了网站,我就无法使它与数据库进行通信。它们都在我本地的机器里。引发的错误是:

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

奇怪的是,我可以通过DataExplorer面板在VisualStudio中导航数据库。通过这样做,我从属性中读取连接字符串,它看起来像

数据源=*我的机器*\SQLEXPRESS;初始目录=*MY_DB*;集成安全性=真

我也尝试了一些改变,比如

数据源=。\SQLEXPRESS;初始目录=*MY_DB*;集成安全性=真

数据源=localhost\SQLEXPRESS;初始目录=*MY_DB*;集成安全性=真

都没有结果


谢谢

问题在于ASP.NET工作进程没有访问数据库的权限

有很多方法可以解决这个问题,但最简单的方法是授予本地组everyone数据库的权限。那你就可以连接了

您可以将连接字符串更改为不使用集成安全性,但为其提供用户名和密码

您还应该在事件日志中看到一条适当的错误消息(表示不允许用户某某访问数据库),然后您可以只授予该用户权限


当你以自己的身份跑步时,你是以自己的身份连接的,你有权利。当IIs运行时,它将作为工作进程运行,并且该用户无法连接。

您的本地计算机上是否打开了SQL Browser服务?是的,SQL Server和SQL Server Browser服务都在我的计算机上运行。我尝试了两种方法。对于第一个,在进程列表中,我看到了要分配给我的用户的web服务器进程,因此这似乎不会发生您所说的问题(不管怎样,这听起来很合理:是否有可能我在检测正确的用户时出错?)。对于第二种方法,我创建了一个新用户,授予每个权限和所有权限,但仍然是相同的错误。所以我问:有没有办法检查数据库是否正确在线并且可以访问?可能是它(或线程)以不同的身份运行。您是否检查了计算机上的事件日志?创建新用户不是解决方案——您必须将工作进程用户添加到SQL Server安全设置中。(也许这就是你的意思?)是的,让我们关注这个问题:我如何识别合适的worker进程用户?我认为第一步应该是使用一个包含你的用户名的连接字符串,看看这是否解决了问题——如果解决了,那么你可以考虑授予worker进程权限或作为指定用户运行worker进程。(如何做到这一点在IIs文档中有详细说明)。我刚刚做了,但没有成功。您提到了IIS:我没有正确的IIS安装,我使用的是Visual Studio附带的安装(实际上名为Visual Web Developer 2008 Express Edition)