私は何日もこれを理解しようとしてきました...私は何年もいじる必要のなかったこの古いアプリケーションを持っていて、この古いWindows 2000(32ビット)マシンが私に行きました. そのため、そのマシンを新しい Windows 7 (64 ビット) マシンに置き換えることになりました。
1 つのことを除いて、すべてが正常に機能しているようです。アプリでデータベースに接続しようとすると、接続できないか、そもそもサーバーが SQL Server であることを確認できないかのように、パスワードの入力を求められ続けます。
ODBC データ ソース アドミニストレータとの接続をテストしたところ、「テストは正常に完了しました!」と完全に機能しました。しかし、アプリを使用して接続しようとすると、タイムアウトになり、ユーザー/パスを再度入力するように求められます。:/
私は別の古いマシン(Windows 2000 32ビット)を稼働させていて、データベースに問題なくアクセスしていたので、サーバーがポートを開いてファイアウォールなどなしで正しくセットアップされていることがわかりました..
このクライアントが接続しない理由を見つけることができないようです! 何か案は?
更新 #1:
SQL Server Management Studio でログ監査をオンにすると、次の 2 つのログ エントリが (次の順序で) 表示されたようです...
テスト #1
ユーザー「pubclient」のログインに成功しました。SQL Server 認証を使用して確立された接続。
ユーザー「pubclient」のログインに失敗しました。理由: 明示的に指定されたデータベースを開くことができませんでした。
そのため、SQL Server 2008 r2 の一時インストールを使用してローカル クライアント マシンでこれを試すと、完全に正常に動作します。まったく同じ設定で、設定の ini ファイルでホストが異なるだけです。
テスト #2
ユーザー「pubclient」のログインに成功しました。SQL Server 認証を使用して確立された接続。
データベース「iri」を起動しています。
ユーザー「pubclient」のログインに成功しました。SQL Server 認証を使用して確立された接続。
ローカル マシン (クライアント -> クライアント) でデータベースを指定する必要がないのに、クライアント -> サーバーから接続しようとすると、なぜ指定する必要があるのでしょうか?
更新 #2
したがって、この時点で言えることは、偽のホスト (ping を実行できないホスト) を使用すると、このアプリケーションはユーザー/パスを要求します (何にも接続できないため)。ping に応答するホストを使用すると、問題なく処理を続行できます。続行するということは、正しいリモートサーバーに接続することを意味します (テスト #2 の更新 #1 に示されているように) が、2 回目のログイン試行を行う前に (Login succeeded for user 'pubclient'. Connection made using SQL Server authentication.
) クライアント マシンでテストとしてセットアップした LOCAL SQL サーバーに接続しようとすることにしました!!! クライアントホストが設定のどこにもリストされていません(クライアントマシン名は作成されたばかりなので、ハードコーディングされていません)。何らかの理由で、クライアント PC を Windows 7 64 ビット (Windows 2000 32 ビットから) にアップグレードしたので、最初のようにリモート ホストではなく、ローカル マシンへの接続を試行し続けたいと考えています。なんてこった!代わりにローカルホストに接続する理由はわかりませんが、これは Windows 2000 では発生しません...