SQL Server 2008 Express にリモート接続

SQL Server 2008 Express は、標準設定のままだと別のPCから接続することができません。SQL Server 2008 Management Studio Express (SSMSE) を使用してリモート接続の許可をしてやるとともに、SQL Server 構成マネージャを使ってプロトコルの設定をしてやる必要があります。SQL Server 構成マネージャでの設定の方法は2通りあって、一つは、SQL Serverが標準で使っている固定ポートを使用する方法と、もう一つは、動的ポートを使用し SQL Server Browser を有効にして外部からの接続にポートを教えてやって接続できるようにする方法です。個人が使う範囲ではどちらを使ってもいいのですが、ファイアーウォールの設定を必要とする場合には、固定ポートを使用した方がポート番号の設定が簡単になります。

1.リモート接続の許可

インストールの設定によっては、標準設定でリモート接続が許可されている場合がありますが、確認のため以下の操作をします。SSMSE で管理者権限のあるユーザーでログインし、オブジェクトエクスプローラでサーバーを右クリックして、プロパティを選択します。「サーバーの プロパティ」ダイアログが表示されるので、ページの選択で「接続」を選択します。下の図の画面が表示されるので、リモートサーバー接続で、「このサーバー へのリモート接続を許可する」にチェックがついていない場合は、チェックをします。
sqlserver-settings27

2.TCP/IPの有効化
「スタート」ボタン、「すべてのプログラム」、「Microsoft SQL Server 2008」、「構成ツール」、「Sql Server 構成マネージャ」の順にクリックして、Sql Server 構成マネージャを立ち上げます。「SQL Server ネットワークの構成」の「MSSQLSERVERのプロトコル」(Web PI でインストールした場合と名前付きインスタンスでインストールした場合は「SQLEXPRESSのプロトコル」)を選択します。TCP/IPを選択して右クリックをして「有効化」をクリックします。
sqlserver-settings28

○ 固定ポートを使用の場合
デフォルトでは、「既定のインスタンス」に設定した場合は、固定ポートに設定されていますが、Web PI でインストールした場合と「名前付きインスタンス」に設定した場合は、動的ポートに設定されています。動的ポートに設定されている場合は、固定ポートに設定を変更します。変更の手順は、上の図で、プロパティをクリックすると「TCP/IPのプロパティ」ダイアログが表示されるので、「IPアドレス」タブを選択します。一番下のIPAllで、「TCP ポート」をSQL Server標準の1433に、「TCP 動的ポート」を空白にしてOKボタンをクリックします。SQL-Server を再起動すると設定が有効になり、固定ポートで接続できるようになります。
sqlserver-settings29

○ 動的ポートを使用する場合

「SQL Server 構成マネージャ」を動作させる必要があります。手順は「SQL Serverサービス」をクリックし「SQL Server Browser」を選択し、右クリックして、プロパティを選択します。
sqlserver-settings30
「サービス」タブを選択し、「開始モード」を自動に設定してOKボタンをクリックします。これで次回のWindows起動時から自動でSQL Server Browserが起動します。上の画面で「SQL Server Browser」を選択し、右クリックすると今回は「開始」が有効になっているので、「開始」をクリックするとSQL Server Browserが起動します。
sqlserver-settings31
なお、「既定のインスタンス」に設定した場合にも、動的ポートを使用することは可能ですが、「TCP/IPのプロパティ」で「TCP ポート」を空白に、「TCP 動的ポート」を 0 に設定して、動的ポートを利用できるようにする必要があります。

3.ファイアウォールの設定

Windows Vista、Windows 7 では、デフォルトでファイアウォールがオンになっているので使用するポートを開く必要があります。固定ポートの場合は、TCP 1433 の受信を許可するようにします。ファイアウォールの設定についての具体的な手順は、SQL Server をリモート接続-ファイアウォールの設定にメモをしました。動的ポートの場合は、UTP 1433 と TCP 1433 の受信を許可するようにしますが、複数のインスタンスがインストールされている場合は、動的にポートが使用されるようになるため、ファイアウォールの構成が難しくなります。
参考リンク:MSDN ライブラリ SQL Server のアクセスを許可するための Windows ファイアウォールの構成

4. 接続文字列(ホスト名)

接続する時のサーバー名は、名前付きインスタンスの場合は、サーバー名\インスタンス名となります。SQL Server 2008 Express の場合デフォルトのインストールでは、servername\SQLEXPRESS となります。もちろんIPアドレスで、192.168.0.3\SQLEXPRESS のように接続することもできます。なお、固定ポートを使用した場合で、192.168.0.3\SQLEXPRESS で接続できない時には、192.168.0.3\SQLEXPRESS,1433 のようにコンマの後ろにポート番号を追加してポート番号を指定すると接続できるようになる場合があります。

リモート接続の場合、Windows 7/Vista では、Windows 認証を利用することはできません。.NET Framework Data Provider for SQL Serve の場合の接続文字列は、以下のようになります。

・既定のインスタンスの場合

Server=servername;Database=databasename;User Id=user;Password=password;
(別の表記)
Data Source=IPAddress;Initial Catalog=databasename;User Id=user;Password=password;

・名前付きインスタンス(インスタンス名 SQEXPRESS)の場合

Server=servername\SQLEXPRESS;Database=databasename;User Id=user;Password=password;
(別の表記)
Data Source=IPAddress\SQLEXPRESS;Initial Catalog=databasename;User Id=user;Password=password;