【问题标题】:SQL Server: cannot connect from local website (SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)SQL Server:无法从本地网站连接(SQL 网络接口,错误:26 - 错误定位服务器/指定实例)
【发布时间】:2013-01-09 18:03:22
【问题描述】:

我正在使用 Visual Studio 2008 和 Sql Server 2008 Express 开发一个网站。我进入了开发,所以代码是正确的,因为我的一些同事使用相同的工具正确运行它。问题是:一旦我运行网站我无法使其与数据库通信。他们都在我的本地机器上。抛出的错误是:

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

奇怪的是,我可以通过 Data Explorer 面板通过 Visual Studio 本身导航数据库。通过这样做,我从属性中读取了连接字符串,它看起来像

数据源=*MY_MACHINE*\SQLEXPRESS;初始目录=*MY_DB*;集成安全=True

我也尝试了一些改变

数据源=.\SQLEXPRESS;初始目录=*MY_DB*;集成安全=True

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

两者都没有结果。

谢谢

【问题讨论】:

  • 本地机器上的 SQL Browser 服务是否开启?
  • 是的,SQL ServerSQL Server Browser 服务都在我的机器上运行。

标签: c# .net sql-server-2008 visual-studio-2008 windows-7


【解决方案1】:

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

有很多方法可以解决这个问题,但最简单的方法是授予本地组每个人访问数据库的权限。然后你应该可以连接了。

您可以将连接字符串更改为不使用集成安全,但给它一个用户名和密码

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

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

【讨论】:

  • 我尝试了两种方式。对于第一个,在进程列表中,我看到要分配给我的用户的 Web 服务器进程,因此您告诉的问题似乎没有发生(无论如何,这听起来很合理:任何机会我在检测正确时都错了用户?)。对于第二种方式,我创建了一个新用户,授予所有权限,但仍然是同样的错误。所以我问:有没有办法检查数据库是否正确在线并且可以访问?
  • 可能是它(或线程)以不同的身份运行。你检查机器上的事件日志了吗?创建新用户不是解决方案——您必须将工作进程用户添加到 SQL Server 安全设置中。 (也许这就是你的意思?)
  • 是的,让我们关注这个:我如何识别正确的工作进程用户?
  • 我认为第一步应该是使用包含您的用户名的连接字符串,看看是否可以解决问题——如果可以,那么您可以考虑授予工作进程权限或运行工作进程作为指定用户处理。 (如何做到这一点在 IIs 文档中有详细说明)。
  • 我刚刚做了,但没有用。您提到了 IIS:我没有正确安装 IIS,我使用的是 Visual Studio 附带的(实际上名为 Visual Web Developer 2008 Express Edition)
猜你喜欢
  • 2016-02-26
  • 2013-08-11
  • 1970-01-01
  • 2012-11-25
  • 2014-05-31
  • 1970-01-01
  • 2011-01-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多