错误:26 - 找到指定的服务器/实例时出错。 (无法从我的主机服务器连接到我的本地Db)

时间:2012-08-05 21:20:07

标签: c# asp.net sql-server sql-server-2008 web-config

我之前已经问过这个问题,但没有任何好的回应, 我的问题是我的app_data文件夹中有一个本地数据库(aspnetdb.mdf),这里是web.config中的连接字符串:

<add name="ApplicationServices" 
     connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" 
     providerName="System.Data.SqlClient" />

所以我的网站在我的本地iis服务器上工作正常,但是当我把网站放在我的主机服务器上时,我收到以下错误消息: 建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:SQL网络接口,错误:26 - 找到指定的服务器/实例时出错)。

在另一台服务器上我有sql server 2008(接受远程连接,我有相同的实例名称SQLEXPRESS)。我真的尝试了一切,但没有任何好结果。我非常感谢你的帮助,谢谢。

1 个答案:

答案 0 :(得分:6)

此格式表示本地连接:

.\SQLEXPRESS

从另一台服务器,您需要指定服务器名称或IP地址,例如:

192.168.1.205\SQLEXPRESS
YOURMACHINE\SQLEXPRESS

您还需要验证该实例是SQL Server Express。从your other nearly identical question开始,它看起来像是一个默认实例。

您还应该停止使用这种愚蠢的用户实例/ attachDbFilename技术。正确地将数据库附加到实例,然后在连接字符串中使用Initial Catalog=aspnetdb;引用逻辑数据库名称。此用户实例功能因多种原因而被弃用,这肯定是其中之一。

当然可能存在其他网络问题会阻止这种情况,例如:如果服务器位于不同的域中,则存在防火墙设置干扰等。但是,您的其他服务器永远无法使用服务器名称的点访问您的计算机。

编辑提供婴儿步骤,因为显然我的建议没有被遵循。假设您已经在新服务器上实际附加了aspnetdb数据库,请试试这个:

 connectionString="data source=192.168.85.124\SQLEXPRESS;
   Integrated Security=SSPI;
   Initial Catalog=aspnetdb;" 

如果您不使用SQL Express命名实例,请尝试:

 connectionString="data source=192.168.85.124;
   Integrated Security=SSPI;
   Initial Catalog=aspnetdb;" 

对于SQL身份验证,请使用您在Management Studio中使用的相同用户名/密码:

 connectionString="data source=192.168.85.124;
   User ID=username; Password=password;
   Initial Catalog=aspnetdb;" 

这是101个问题的故障排除。如果你仍然无法让这个工作,你可能需要聘请一名顾问10分钟为你解决,因为你无法弄清楚你做了什么以及为什么你不能让它工作。