確認するポイントを纏めておきます。 ヽ(´ー`)ノ
そんなSQL Serverのエントリーレベルの無償データベース、SQL Server Express。
そのお手軽さから、とりあえず小規模DBを構築する場合、PostgreSQLと並び人気があります。
私もしばしば利用することがありますが、
このSQL Server Express、構築後そのままだとリモート接続できないことが多い、、、
DBインスタンスのリモート設定
まず、SQL Server Expressには、SQL Server Management Studioが同梱されていないので、別途ダウンロード、インストールする必要があります。(無償!)
SQL Server Management Studio (SSMS) のダウンロード
https://docs.microsoft.com/ja-jp/sql/ssms/download-sql-server-management-studio-ssms
そしたら、
SQL Server Management Studioでログオンし、
インスタンスの「プロパティ」から「接続」を確認します。
ここの「このサーバーへのリモート接続を許可する」にチェックが入っているか確認します。
DBインスタンスのアクセス権限
同じくSQL Server Management Studioでインスタンスの「プロパティ」から「権限」を確認します。
アクセスさせたいアカウントに対して、「SQLの接続」等、必要な権限があるかを確認します。
ちなみに、上記画像はなんで「SQLの接続」が2レコードあるんでしょうかね・・・分りませんのでここは気にしない!
SQL Server Browserが実行しているか
Sql Server Configuration Manager(SQL Server 構成マネージャー)を起動します。
これはSQL Server Expressインストール時に同梱されていると思います。
「SQL Serverサービス」の「SQL Server Browser」が実行中であることを確認します。
これが動いていないとリモート接続できない。
TCPポートを確認する
私はこれでハマることが多いです・・・(笑)同じく、Sql Server Configuration Manager(SQL Server 構成マネージャー)から、
「SQL Serverネットワークの構成」-「(インスタンス名)のプロトコル」を開き、「TCP/IP」のプロパティを選択します。
はいコレ。
TCP動的ポートが有効になっています。
これじゃあ、リモート接続元から一般的な「1433」ポートに繋ごうとしても接続出来ないわけです。
対策として、
・接続元から接続先ポートの設定を変える。
・接続先ポートの設定を固定する。
の2パターンがあるかと思いますが、前者はFWやら接続元設定やらいろいろ面倒なので、
ここでは後者で構築しちゃいます。
「IPAll」項目の「TCPポート」を固定します。ここでは一般的な「1433」にしておきます。
「TCP動的ポート」は値無しにしておきます。
同じく、Sql Server Configuration Manager(SQL Server 構成マネージャー)から、
「SQL Server(インスタンス名)」、「SQL Server Browser」を再起動しましょう。
Windowsファイアウォールを確認する
意外と見落としがちなFWの設定。
TCPポートの受信許可を設定しましょう。
構築環境によりますが、SQL Serverは1433、1434辺りが一般的ですかね。
以上でいかがでしょう