![無題 無題](http://lh5.ggpht.com/-A6fX-aYT3HU/T8HIXPjr33I/AAAAAAAAGLg/incN-E9uou8/_thumb1.png?imgmax=800)
以前「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のバージョンについて」を書きました。
未設定状態でコネクトするとこんなエラーがでる
![無題 無題](http://lh5.ggpht.com/-Zq8fcimCs4I/T8HIYoZ503I/AAAAAAAAGLs/pfuJG2_vtHg/%252521L_thumb.png?imgmax=800)
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 ネットワークの構成-プロトコル-
![image image](http://lh6.ggpht.com/-k5DW0lzVaxw/T8HIbS0XZCI/AAAAAAAAGMA/bv6P-ppJPs4/image_thumb.png?imgmax=800)
- 構成ツール→SQL Server構成マネージャを起動
- SQL Serverネットワークの構成→SQLEXPRESSのプロトコルを選択
- TCP/IPを右クリック→有効にする
デフォルトはTCP/IPは無効になっていますので、有効にしてください。
- SQL Serverサービスを再起動する
ファイアウォールの設定-TCP1433宛のパケットを受信-
![image image](http://lh3.ggpht.com/-ZDDGXAHHFO0/T8HIg4Te2UI/AAAAAAAAGMw/9eTKcfZMtTI/image_thumb5.png?imgmax=800)
SQL ServerはTCP1433とUDP1434を使用します。
ファイアウォールのデフォルトはTCP1433の通信は許可してない(ブロック)しています。
※理由はSQL Server 2000時代に猛威を振るった「Slammer」だと思います。
※TCPは1433、UDPは1434とポート番号が異なります。間違えではありませんのでご注意ください。
インターネットを介しての SQL Server への接続 - Technet
同じようなエラーが出て困った方は是非設定を見なおしてみてくださいね。