2004.10.22

SQLServer2000 - WindowsXP SP2への対処

念のため、『楽』と言われる SQLServer2000の対処も書いておく。

テスト環境用等で WindowsXP(SP2)マシンに SQLServer2000(や MSDE)をインストールすることが
あるかと思うが、この場合 SQLServer2000は WindowsXP-SP2の『Windowsファイアウォール』の影響もあって、
そのマシンの外部からはそのままでは使用できなくなってしまう。
(ここまでパクリ)


どうすれば使えるようになるかというと、以下の2つの設定を見直さなくてはいけない。

 1.コントロールパネル → Windowsファイアウォール
   → 『例外』タブ → 『ポートの追加』ボタン
  TCP-1433 を追加する。(名前は自由に付けてよい)


 2.スタート → プログラム → MicrosoftSQLServer
  → サーバーネットワークユーティリティ → 『全般タブ』
  有効になっているプロトコルを『TCP/IP』だけにする。
  (通常『名前付きパイプ』も有効になっているはず)
  また上記『TCP/IP』のプロパティを見て“既定のポート”が 1433 になっているかも確認する。


これにより、普通は上記で例外的に許可された TCP-1433 を使って外部から当該マシンの SQLServer2000 に
アクセスできるようになる。
『名前付きパイプ』が有効になっていると、場合によっては TCP-135等が使われる可能性があるため、
『例外』に 1433以外の 135等を設定する必要が出てくる。これはセキュリティの面から望ましくないので、
一般的には『TCP/IP』だけにするのがオススメではないかと思う。


なお、この設定をした場合、クライアント側のプログラムなどでデータベースへの接続文字列に
直接 DBNMPNTW が指定されている(=『名前付きパイプ』を明示している)と
相変わらずプログラムから SQLServerへの接続ができないままになる。
この場合は DBMSSOCN (=『TCP/IP』接続を明示)に書き換える必要がある。

Const cgsConnect1 = "driver={SQL Server};server=dbsvr;NETWORK=DBMSSOCN;uid=foo;pwd=bar;database=hoge"
Const cgsConnect2 = "PROVIDER=SQLOLEDB;USER ID=foo;PASSWORD=bar;INITIAL CATALOG=hoge;DATA SOURCE=hoge;Network Library=DBMSSOCN"


また、Access で ADPを使って接続している場合はまた別の困った問題が出るのだが、
それについては機会があったら紹介する。

コメント (1)

>また、Access で ADPを使って接続している場合はまた別の困った問題が出るのだが、
>それについては機会があったら紹介する。

是非是非、お願いしまっす。(^^)

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
ichikawa