2

几个小时以来,我一直试图找到确切的问题,但到目前为止,我只是无法弄清楚可能出了什么问题。

我有一个 WPF 应用程序尝试使用此连接字符串连接到远程 SQL Server:

<connectionStrings>
   <add name="MyDBEntities" 
        connectionString="metadata=res://*/MyModel.MyDBModel.csdl|res://*/MyModel.MyDBModel.ssdl|res://*/MyModel.MyDBModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=server1\instance1,56482;Initial Catalog=DB_MyTool;User ID=MyTool_admin;Password=MyPass;MultipleActiveResultSets=True&quot;" 
        providerName="System.Data.EntityClient" />
</connectionStrings>

...我得到以下内部异常:

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

好吧,我想我们都知道这个问题并且可能的解决方案:检查服务器是否在线(顺便说一下,它是一个数据中心)、协议、TCP/IP、防火墙……

但这是线索:

  • 我在使用严格预配置客户端的公司网络上

  • 其中一个客户端,我正在开发的客户端,能够使用这个应用程序连接到服务器(我只是将整个项目解决方案复制到其他客户端)

  • 该错误发生在所有其他客户端上,即使具有管理员权限

  • 我从连接字符串中获取了确切的数据,并在其他客户端上使用 Microsoft SQL Management Studio 成功连接(应用程序不起作用)

  • 我写了一个小控制台工具来测试其他客户端上“第三方软件”的连接性,它也成功了

这导致了一些结论:

  • 不能是服务器,因为 Management Studio 可以连接
  • 它不能是应用程序,因为它可以在另一个客户端上运行
  • 它不可能是连接字符串,因为我用我的小工具测试了它

那么,谁能告诉我可能是什么问题?

要么是我的应用程序和客户端配置的奇怪混合,要么我完全愚蠢。

提前致谢!

4

2 回答 2

0

我是一个白痴。

问题是我更改了位于项目文件夹中的 .config 文件中的连接字符串,但没有更改 \bin\Debug 文件夹中的连接字符串,当然,我在其中一个上测试 .exe 文件时从该文件开始其他客户。

每当我在我开发的计算机上重建我的解决方案时,这个 .config 文件就会被覆盖。由于我需要开发人员计算机上的另一个连接字符串,因此使用的连接字符串不可能在任何客户端上都正确。我从没想过检查编译后的 app.config 文件。

我希望把这个留在这里有一天可以帮助像我这样拼命寻找教他如何使用 Visual Studio 的人。

尽管如此,还是感谢您的努力。

于 2013-05-28T16:16:20.137 回答
0

它不可能是连接字符串,因为我用我的小工具测试了它

一些工具为虚拟化服务器采用不同的连接字符串。

# This syntax works for my Python and Perl ODBC Drivers:
Data Source=server1\instance1;Port=56482;

# This syntax works for my JDBC jTDS driver:
Data Source=server1:56482;instance=instance1;

也许您可能想尝试一下 JDBC 语法?

于 2013-05-23T18:38:46.997 回答