
Windows 7 VirtualBox ゲストに SQL Server Express 2014 をセットアップしましたが、Ubuntu ホストの jTDS JDBC ドライバーを使用して接続できません。エラーが発生しますCould not retrieve database information
。どこかで手順が抜けているような気がしますが、オンラインで試していないものは見つかりません。
- 接続URLは
jdbc:jtds:sqlserver://192.168.56.1:1433/dbo;instance=SQLEXPRESS
- ゲスト上で Windows ファイアウォールが完全に無効化されています。
- ホストからゲストの IP アドレスに ping を実行できます。
- サーバーおよび SQL ブラウザー サービスが実行されています。
netstat -a
ゲストでは、TCP 0.0.0.0:1433 および UDP 0.0.0.0:1434 がリッスンしていることを確認します。- サーバーログにはこう記されている
Listening on <All IPv4>:1433
- Surface Area 構成ツールでは TCP/IP が有効になっており、すべての IP に対してポート 1433 でリッスンするように設定されています。
- SSMS は、そのサーバー インスタンスに対してリモート アクセスが有効になっていることを確認します。
- ホスト専用の IP アドレス (192.168.56.1、上記と同じ) と、JDBC 経由で使用しているのと同じ SQL 認証資格情報を使用して、ゲスト上の SSMS からデータベースに接続できます。
telnet 192.168.56.1 1433
telnet 192.168.56.1:1434
ホストからのとは両方とも ですぐに失敗しますがConnection refused
、ゲストからの同じコマンドは で失敗しません。
ゲスト内部からインターフェイス IP アドレスに接続でき、 からの出力も可能なため、ファイアウォールの問題のように思えますnetstat
が、Windows ファイアウォールがオフになっているため、次に何をすればよいのか、ここからどのような診断手順を実行すればよいのかさえわかりません。
答え1
私の最初の試みは、ホストオンリー アダプターの設定を削除してみることです。これまで、これについては悪い経験しかありませんでした。
問題の仮想マシンのクローンを作成し、両方の Windows マシンのネットワーク タイプをブリッジに変更して (物理 LAN に接続できるようにするため)、両方を起動して相互に通信できるかどうかを確認することをお勧めします (一方から他方に ping を実行し、ネットワーク フォルダーの共有とアクセスも試してください)。
これは、障害検出の目的でホスト オペレーティング システムを考慮から除外するため、同様の問題が発生したときに通常実行する簡単なテストです。
2 台の Windows マシンが通信できる場合は、そのうちの 1 台をシャットダウンし、アダプターをブリッジ モードに変更した後、マシンに割り当てられた新しい IP で Ubuntu を再度試してください。
注意: LAN 上でルーターなどの DHCP サービスが実行されていない場合は、Windows マシンに静的 IP アドレスを提供する必要があります。
お役に立てれば幸いです。