doodle-on-web

自分で調べたことや、仕事の中で質問されたことなどをまとめています。

Adaptive Server is unavailable or does not existエラー解決策について

スポンサーリンク

Adaptive Server is unavailable or does not existエラー解決策について

Adaptive Server is unavailable or does not existエラーってどう解決するのかをしらべたのでまとめておきます。

環境確認

インスタンス名の調査

まずは、SQL Serverインスタンスに関する情報を集めます。

1.SQLServerのマシンにログインできる場合には、ログインします。

2.SQL Server 構成マネージャーを起動します。

f:id:doodle-on-web:20190409163142p:plain

3.構成マネージャーの左ペインで、 [SQL Server のサービス] を選択します。

f:id:doodle-on-web:20190409163226p:plain

インスタンスの名前はかっこで表示されます。

※この場合は、SQL Server (MSSQLSERVER) という名前のインスタンスが既定の (名前のない) インスタンスです。

SQLServerで使用するTCPポート番号の調査

続いて、SQLServerで使用するTCPポート番号を調査します。

1.SQLServerを使用するサーバでSQLServer Management Studioを起動します。

2.対象のSQLServerインスタンスに接続します。

3.オブジェクトエクスプローラーで[管理] を展開し、 [SQL Server ログ] を展開し、現在のログをダブルクリックします。

f:id:doodle-on-web:20190409163522p:plain

4.ログビューアーで、ツールバー[フィルター] ボタンをクリックします。

f:id:doodle-on-web:20190409164736p:plain

5. [テキストを含むメッセージ] ボックスで、「 server is listening on」と入力し、 [フィルターの適用] をクリックし、 [OK] をクリックします。

f:id:doodle-on-web:20190409164845p:plain

6.Server is listening on [ 'any' 1433] というようなメッセージを確認します。

f:id:doodle-on-web:20190409164914p:plain

7.表示された[1433]をメモしておきます。

 ※今回は1433なので、デフォルトの設定で構築されていることが確認できます。

別の確認方法

接続する予定のサーバから以下のコマンドを打ちます。

$ tsql -LH ServerName1

そうするとこんな感じに出力されたりします。

$ tsql -LH ServerName1
     ServerName ServerName1
   InstanceName InstanceName
    IsClustered No
        Version 13.0.1601.5
            tcp 1433

プロトコルが有効かを確認する。

構成マネージャーを利用して有効にしない限り、別のコンピューターからデータベース エンジンへの接続が有効にならず、接続することができません。

1.SQL Server 構成マネージャーを起動します。

2.左ペインで、 [SQL Server ネットワークの構成] を展開し、接続先とする SQL Server インスタンスを選択します。

f:id:doodle-on-web:20190409164955p:plain

3.一覧上で、有効となっていることを確認します。

4.TCP/IP が有効ではない場合、 [TCP/IP] を右クリックし、 [有効化] をクリックします。

5.変更した場合には、再起動が必要になります。

6.左ペインで、 [SQL Server のサービス] を接続します。

7.右ペインで、データベース エンジンのインスタンスを右クリックし、 [再起動] をクリックします。

f:id:doodle-on-web:20190409165146p:plain

TCP/IP 接続テスト

ping ツールを使用し、TCP をテストします。

1.[スタート] メニューの [ファイル名を指定して実行] をクリックします。[ファイル名を指定して実行] ウィンドウで、「 cmd」と入力し、 [OK] をクリックします。

2.コマンド プロンプト ウィンドウで、「 ping 」と入力し、SQL Server を実行しているコンピューターの IP アドレスを入力します。

3.ネットワークが適切に構成されていれば、Reply from (この後にいくつかの情報が続きます) のような応答を受け取ります。 宛先ホストに到達できません。または "要求がタイムアウトしました" などのエラーを受け取る場合は、TCP/IP が正しく構成されていません。

ファイアーウォールのポート確認

別のコンピューターから TCP/IP で接続するには、SQL Server コンピューターで、データベース エンジンで使用される TCP ポートへの接続を許可するようにファイアウォールを構成する必要があります。

接続確認

以上の結果をもって

上記内容でまずサーバから接続できるかを確認する。

$ tsql -H ServerName1 -p ポート番号 -U ユーザ名 -P パスワード

-p : 上で調査したtcpの番号を入力する。

1./etc/freetds.confの設定

freetds.confに以下のような設定を追記する。

[ServerName1]
    host = IP or DNS
    port = port番号(上で調査したtcp番号)
    tds version = 7.4 
    client charset = UTF-8

2./etc/odbc.iniの設定

odbc.iniに以下のような設定を追記する。

[ServerName1]
Servername = ServerName1
Driver = FreeTDS
Database = DatabaseName

3.接続確認

$ isql -v ServerName ユーザ名 パスワード

これで繋がるといいですね!