几天来我一直在试图解决这个问题......我有一个多年来我不必乱用的旧应用程序,而这台旧的 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 上不会发生......