以前「ExcelからSQL Serverへ接続し、SQLステートメントを実行する方法」や「SQL Serverで大量レコードをインサートする方法」を投稿しましたが、クライアントPCからSQL Serverにリモート接続やコネクトする場合にSQL Server側の設定が必要です。
設定しないと接続できませんので、今回はその点をまとめてみました。
2013.11.26 追記
TCP/UDPのポート番号について追記しました。
2015.04.01 追記
別記事「SQL Server 2014 へ接続するための注意点とSQL Server Native Clientのバージョンについて」を書きました。
未設定状態でコネクトするとこんなエラーがでる
SQLState: ‘08001’
SQL Server エラー: 1331
[Microsoft][SQL Server Native Client 10.0']名前付きパイプのプロバイダー:SQL Serverへの接続を開けませんでした[1331]:
SQLState: ‘HYT00
SQL Server エラー: 0
[Microsoft][SQL Server Native Client 10.0']ログインタイムアウトが時間切れになりました
接続できませんでした:
SQLState: ‘08001’
SQL Server エラー: 1331
[Microsoft][SQL Server Native Client 10.0']SQL Serverへの接続の確立中に、ネットワーク関連のエラーまたはインスタンス固有が発生しました。
サーバーが見つけられないか、アクセスできません。インスタンス名が正しいことと、SQL Serverがリモート接続を許可するように構成されていることを確認してください。詳細については、SQL Serverオンライン ブックを参照してください。
対処方法はSQL Serverの設定とファイアウォールの設定
上記エラーが出た場合は、SQL Serverの設定とファイアウォールの設定を確認してください。SQL Server ネットワークの構成-プロトコル-
- 構成ツール→SQL Server構成マネージャを起動
- SQL Serverネットワークの構成→SQLEXPRESSのプロトコルを選択
- TCP/IPを右クリック→有効にする
デフォルトはTCP/IPは無効になっていますので、有効にしてください。
- SQL Serverサービスを再起動する
ファイアウォールの設定-TCP1433宛のパケットを受信-
SQL ServerはTCP1433とUDP1434を使用します。
ファイアウォールのデフォルトはTCP1433の通信は許可してない(ブロック)しています。
※理由はSQL Server 2000時代に猛威を振るった「Slammer」だと思います。
※TCPは1433、UDPは1434とポート番号が異なります。間違えではありませんのでご注意ください。
インターネットを介しての SQL Server への接続 - Technet
同じようなエラーが出て困った方は是非設定を見なおしてみてくださいね。