0

几天来我一直在试图解决这个问题......我有一个多年来我不必乱用的旧应用程序,而这台旧的 windows 2000(32 位)机器对我来说已经失效了。所以我最终用一台新的 Windows 7(64 位)机器替换了那台机器。

除了一件事之外,一切似乎都运行良好。当我尝试使用应用程序连接到数据库时,它一直提示我输入密码,就好像它无法连接或首先看到服务器是 SQL Server!

我已经测试了与 ODBC 数据源管理器的连接,并且完美地“测试成功完成!”。但是当我尝试使用我的应用程序连接时,它只是超时并要求我再次输入用户/密码。:/

我有另一台旧机器(windows 2000 32bit)启动并运行,它访问数据库很好,所以我知道服务器设置正确,端口开放,没有防火墙等。

我似乎无法找到该客户端无法连接的原因!有任何想法吗?


更新#1:

似乎在 SQL Server Management Studio 中打开日志审核时,我能够看到以下两个日志条目(按以下顺序)...

测试#1

用户 'pubclient' 登录成功。使用 SQL Server 身份验证建立的连接。

用户 'pubclient' 登录失败。原因:无法打开明确指定的数据库。

因此,当我在本地客户端计算机上尝试使用 SQL Server 2008 r2 的临时安装时,它工作得非常好。完全相同的设置只是使用的设置 ini 文件中的不同主机!

测试#2

用户 'pubclient' 登录成功。使用 SQL Server 身份验证建立的连接。

启动数据库“iri”。

用户 'pubclient' 登录成功。使用 SQL Server 身份验证建立的连接。

我不必在本地机器(客户端->客户端)上指定数据库,那么为什么在尝试从客户端->服务器连接时?


更新#2

因此,据我所知,如果我使用的是假主机(无法 ping 通的主机),该应用程序将要求我提供用户/通行证(因为它无法与任何东西建立连接)。如果我使用确实响应 ping 的主机,它似乎很高兴并继续。通过继续,我的意思是它将连接到正确的远程服务器(如 TEST #2 上的 UPDATE #1 所示)但在它进行第二次登录尝试之前(Login succeeded for user 'pubclient'. Connection made using SQL Server authentication.) 它决定尝试连接到我设置为在客户端机器上测试的本地 SQL 服务器!!!我没有在设置中的任何地方列出客户端主机(客户端计算机名称只是编造的,因此没有硬编码)。由于某种原因,现在我已将客户端 PC 升级到 Windows 7 64 位(从 Windows 2000 32 位),它希望继续尝试连接到本地计算机,而不是像最初那样连接到远程主机!有没有搞错!我不知道它为什么要连接到本地主机,但这在 Windows 2000 上不会发生......

4

2 回答 2

1

我建议尝试“更准确”的连接字符串。

https://www.connectionstrings.com/sqlconnection/connect-via-an-ip-address/

Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;
Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;

或者

Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;
Initial Catalog=myDataBase;Trusted_Connection=True;

这个连接字符串有一个 IP 地址和端口,指定网络库 (tcp/ip)(搜索 dbmssocn,你会找到其他的,但 dbmssocn 是第一个尝试的)。上面的第一个用于 sql server 身份验证...第二个用于集成安全性。

我提到这一点是因为我遇到了一个不能使用命名管道但使用 tcp 的客户端的问题。

这不是一个很好的机会,但它值得一试。

于 2015-11-21T03:42:13.273 回答
0

我看到你正在使用 ODBC。您需要确保设置了32 位ODBC。为此,您必须使用 wow64 目录中的 ODBCAD32.exe。开始菜单上的默认 ODBC 管理员转到 64 位,您的应用程序(32 位)不会看到这个。因此,它可能是一个糟糕的应用程序,它隐藏了它无法找到带有登录错误消息的 DSN 的事实。

看看这个https://superuser.com/questions/419832/how-can-i-open-the-32-bit-odbc-data-source-administrator-in-windows-7-64-bit请确认您的应用程序在 32 位模式下运行(在任务管理器中旁边有一个星号)

于 2015-12-02T03:21:25.560 回答