我在Windows Server 2003上使用VSTS 2008 + .Net 3.5 + C#+ SQL Server 2008 Enterprise。我使用以下连接字符串,labtest1是本地计算机名称,我使用ADO.Net从本地计算机连接。然后它总是因连接错误而失败。但是当我将连接字符串从“labtest1”更改为“。”时,连接对于相同的ADO.Net客户端代码没有任何问题。有什么想法是错的吗?
Data Source=labtest1;Initial Catalog=CustomerDB;Trusted_Connection=true;Asynchronous Processing=true
以下是我收到的详细错误消息
System.Data.SqlClient.SqlException:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供者:命名管道提供程序,错误:40 - 无法打开与SQL Server的连接)
答案 0 :(得分:1)
对我来说看起来像是一个Sql Server配置问题:您是否尝试在Sql Server网络配置中调整协议?应启用命名管道或TCP / IP。
答案 1 :(得分:1)
使用“。”时或者“(本地)”它连接到PC上的默认实例,可能是SQL Server安装了实例,在这种情况下,您必须在连接字符串中以“SERVER \ INSTANCE_NAME”格式指定实例名称。
在SQL Management Studio中执行此查询以查看完整的服务器\实例名称
select @@servername
答案 2 :(得分:1)
我之前看到过这个问题,ZoneAlarms阻止了连接(在试图连接到SQL服务器的机器上)。我会花一些时间在防火墙等周围调查这个区域。
希望这有帮助
答案 3 :(得分:1)
您是否在网络配置中启用了命名管道网络协议? (在SQL Server配置管理器--sql server 2005中,这就是我所拥有的,在2008年可能会有所不同 - 您应该能够验证此设置)
答案 4 :(得分:1)
尝试按计算机名称ping ping labtest1
。如果找不到服务器,请尝试使用域名ping labtest1.mydomainname.com
。如果这样做,那么您只需要在域控制器中添加/修复DSN别名,或者只需重新登录到该计算机。
答案 5 :(得分:1)
另外一个 - 可能不相关 - 但是你没有指定安全模型,至少不是作为样本提供的字符串。
我希望看到:连接字符串中的Integrated Security = True(假设它是本地计算机)。
可能相关的另一件事是 - 正如已经提到的 - 协议,我希望确保启用TCP / IP。