[英]VB6 applications can connect to SQL Server, but .NET applications can't
我们的系统结合使用VB6遗留应用程序和较新的.NET应用程序。 应用程序部署到我们的客户端,他们从终端服务器框运行应用程序,SQL Server数据库在不同的框上运行。
VB6应用程序工作正常,而所有.NET应用程序在启动时都会失败(尝试连接到数据库以读取配置信息),每次都有错误:
System.Data.SqlClient.SqlException:建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。 (提供程序:TCP提供程序,错误:0 - 连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接主机无法响应而建立连接失败。)
这是非常奇怪的事情:我在C#中创建了一个测试.NET应用程序,它复制了.NET应用程序使用的确切连接字符串 - 我部署了一个显示所使用的实际连接字符串的应用程序的检测版本 - 以及测试应用程序的工作原理 。
VB6连接字符串(有效): Provider=SQLOLEDB;Data Source=servername;Initial Catalog=databasename;User ID=username;Password=password;
.NET连接字符串(两者都有效和不起作用): Data Source=servername;Initial Catalog=databasename;User ID=username;Password=password;Application Name="ourappname"
我们的其他客户都没有遇到过同一个二进制文件的问题,这告诉我.NET应用程序如何与这个特定客户端系统进行交互是一个问题。
我应采取哪些步骤来解决/解决此问题? 我现在真的很茫然。 我希望其他人之前见过这个问题; 我在Google上找不到任何相关内容。
我发现这种行为通常有几个主要原因:
SQL Server未配置为侦听特定连接类型。 要确定这一点,请在SQL计算机上打开SQL Server配置管理器,单击SQL Server网络COnfiguraiton,然后单击MSSQLServer的协议。 验证是否已启用TCP / IP。
SQL Server不允许远程连接(如果其他应用程序正在连接,那么这显然不是问题)。
客户端计算机未配置为使用SQL Server支持的协议与SQL Server通信,或者客户端计算机输入的配置信息不正确。 要验证这一点,请从Run ...提示符运行cliconfg,并确保启用了相应的协议,并且Alias选项卡中没有任何冲突的别名。 我通常会为连接字符串中配置的计算机名称添加一个特定的IP地址,以防出现DNS问题(至少用于测试)。
由于VB6客户端工作,而.Net客户端不工作,因此64位与32位访问可能存在问题。 如果您的应用程序是针对64位或任何CPU编译的,您可以尝试使用32位构建来查看是否可以解析访问权限。 如果是这样,那么这很可能是64位SQL客户端配置问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.