Microsoft SQL Serverへのアクセス方法は、共有メモリ、名前付きパイプ、TCP/IP接続の3つで、その中でもTCP/IPが一般的です。
ExpressサーバをWindows10などにインストールして、Microsoft SQL Server Management Studio(SSMS)でローカル接続して使っているうちは共有メモリアクセスで気づかないけど、ソケット接続しようとすると1433でつながらないぞということでちょっとハマったのでメモしておきます。
SQL ServerのTCP/IPのListenポートといえばtcp:1433で有名ですが、無料版のSQL Server ExpressではWell-knownポートでのListenができないため、別のポートを使う必要があります。
###SQL Server Confiruration Managerの設定
まずはSQL Server Confiruration Manager(構成マネージャー)を起動して、TCP/IPの設定を有効にします。
TCP/IPのプロパティを開いて、IPアドレスのタブの一番下にあるIPAllのTCPポートに49152~65535の間で決めます。
これを設定しないと、ポート番号がSQL Serverを起動するたびに動的に任意のポート番号が割り当てられるので面倒です。
###ファイアウォールの設定
管理ツールからWindows Firewallの構成マネージャを開いて、「受信の規制」で新しい規制を登録します。
適当な名前を付けて、「プロトコルおよびポート」のタブでプロトコルの種類を「TCP」、ポート番号をSQL Server構成マネージャで設定したポート番号を入力します。
これでSQL Server側の設定は完了です。
###接続テスト
SSMSでは共有メモリ接続してしまうので、HeidiSQLを使って接続テストしました。
ホスト名はlocalhostでポート番号は構成マネージャやFirewallで設定したポート番号を記述します。
ちゃんと設定されていれば接続できるはずです。
###トラブルシューティング
うまくつながらない場合はユーザの設定などが怪しいかもしれません。SSMSのセキュリティのところで確認してみましょう。