我之前已经问过这个问题,但没有任何好的回应, 我的问题是我的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)。我真的尝试了一切,但没有任何好结果。我非常感谢你的帮助,谢谢。
答案 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分钟为你解决,因为你无法弄清楚你做了什么以及为什么你不能让它工作。