トップページへ PASSJ ブログへ
トップページへ
分科会
特集!
コミュニケーション
資格
セミナー・コンファレンス
インフォメーション
エラーでおぼえる!? SQL Server 2000 管理運用術
文=鈴木智行(NEC Eラーニング事業部)
第1回
リモートからSQL Server 2000にアクセスできない?
「リモートからSQL Server 2000にアクセスできない!」というエラーには、多くの原因が考えられます。実際に「マイクロソフト サポート技術情報 − 328306」にも、さまざまな解決策が掲載されています。今回は、このようなエラーの原因として最も基本的なものでありながら、あまりオモテには出てこないネットワークコンポーネントの設定についてご紹介します。
本稿ではSQL Server 2000のEnterprise Editionを使用して解説しますが、Standard Editionでも同様です。

目次
ネットワークライブラリ(Net-Library)
Net-Library は、SQL Server 2000のインストール時には設定できない?
既定のNet-Libraryで十分?
クライアントとサーバーで一対のNet-Libraryが必要
名前付きパイプでの通信
TCP/IP(ソケット)での通信
〜最後に〜

ネットワークライブラリ(Net-Library)


「ネットワークライブラリ(Net-Library)」は、クライアントとSQL Server が動作しているサーバーとの間でネットワークパケットをやり取りするときに使用されるコンポーネントで、クライアントとサーバーの両方で実装されます。Oracleでは、「Oracle Net」にあたります。

クライアントからサーバーのSQL Serverにアクセスする際は、アプリケーションから要求されたTransact-SQLをカプセル化した「TDSパケット」をクライアントNet-Libraryがネットワークプロトコルにパッケージ化し、サーバーNet-LibraryがネットワークプロトコルパケットからTDSパケットを取り出してSQL Serverに渡します(応答はこの逆の流れになります)。



Net-Library は、SQL Server 2000のインストール時には設定できない?


SQL Server 2000のインストール手順は、非常に簡単な応答と少ないステップで終了します。SQL Server 2000のセットアップの種類は「最小」、「標準」、「カスタム」の3種類しかありません。ここで「最小」または「標準」を選択した場合(画面1)、Net-Libraryの設定画面(画面2)は表示されません(他にも「コンポーネントの選択」画面と「照合順序の設定」画面は表示されません)。

「カスタム」インストールを選択しない限り、インストール時に既定のNet-Libraryを変更することはできません。

■ 画面1 セットアップの種類
(図)セットアップの種類

■ 画面2 Net-Libraryの設定画面
(図)Net-Libraryの設定画面


既定のNet-Libraryで十分?


ただし、Net-Libraryはインストール後に変更できないわけではありません。変更したい場合、クライアントNet-Libraryは「SQLクライアント設定ユーティリティ」(画面3)で、サーバーNet-Libraryは「SQL Serverネットワークユーティリティ」(画面4)で各Net-Libraryを変更することができます(詳しい操作はSQL Server Books Onlineを参照してください)。

既定では「TCP/IP(ソケット)」と「名前付きパイプ」が有効になっており、一般的なWindowsのネットワーク環境であれば、既定のままで十分です。そのためNet-Libraryはあまり意識せずに使用されているのでしょう。


■ 画面3 SQLクライアント設定ユーティリティ
(図)SQLクライアント設定ユーティリティ

■ 画面4 SQL Serverネットワークユーティリティ
(図)SQL Serverネットワークユーティリティ


クライアントとサーバーで一対のNet-Libraryが必要


既定ではクライアントとサーバーには同じNet-Libraryが追加されており、通常はエラーが起こることはありませんが、クライアントとサーバーで同じNet-Libraryを実装していなかった場合、エラーが起こります。

たとえば、下記のような環境を用意します。

ワークグループ環境(同一セグメント)
コンピュータ名 Net-Library
PERTH 名前付きパイプ
BRISBANE TCP/IP

この状況下で、PERTHのクエリアナライザでBRISBANEのSQL Server 2000にアクセスした場合、エラーが発生します(画面5)。

■ 画面5 エラーメッセージ
(図)エラーメッセージ


名前付きパイプでの通信


名前付きパイプを使用して、Windows 2000 の下で動作する SQL Server 2000に接続する場合、SQL Server 2000にアクセスする以前に\\<SQL Server 2000のコンピュータ名>\IPC$ に接続する権限が必要です。

たとえば、下記のような環境を用意します

ワークグループ環境(同一セグメント)
コンピュータ名 ユーザー状況
PERTH UserAを作成
BRISBANE Guest無効

上記の環境では、PERTHのクエリアナライザでBRISBANE のSQL Server 2000にアクセスした場合、エラーが発生します(画面6)。

■ 画面6 エラーメッセージ
(図)エラーメッセージ

上記のエラーは画面5と同じエラーであり、[DBNETLIB]でのエラーメッセージとして発生しています。Net-Libraryを統一すればこのエラーは解消される場合もありますが、名前付きパイプで統一している今回のケースでは、下記に紹介しているユーザーが原因で発生する場合もありますし、この他にも実際にNet-Libraryを実現しているDLLファイルの破損等も考えられます。

一般的に、ワークグループ環境ではIPC$ に接続するために、次の条件が必要です。

・同じユーザーアカウント(ユーザー名、パスワード)が存在する。
・GUESTアカウントが有効になっている。

したがって今回の場合、BRISBANEコンピュータに対して同じユーザーアカウントでユーザーを作成したり、GUESTユーザーを有効にした場合に、初めてSQL Server 2000へのアクセスが可能となります。結果は下記のようになります。

  ユーザー設定 SQLServer認証 Windows認証
1 UserAを作成 ログインアカウント、パスワードが合致する場合にアクセス可能 UserAに関するWindows認証アカウントが存在する場合にアクセス可能
2 Guest有効 Guestに関するWindows認証アカウントが存在する場合にアクセス可能

たとえば、PERTHのクエリアナライザでBRISBANE のSQL Server 2000にWindows認証でアクセスした場合を考えてみましょう。GUESTアカウントを有効にし、そのGUESTに対するWindows認証アカウントを作成しなかった場合は画面7のエラーメッセージが表示されます。UserAを作成し、そのUserAに対するWindows認証アカウントを作成しなかった場合は画面8のエラーメッセージが表示されます。

これらのエラーメッセージから、上記のWindows認証に関する検証は簡単に行うことが可能です。

■ 画面7 エラーメッセージ
(図)エラーメッセージ

■ 画面8 エラーメッセージ
(図)エラーメッセージ


TCP/IP(ソケット)での通信


TCP/IP(ソケット)での通信は、次の条件が必要となります。

・名前解決が可能(コンピュータ名でアクセスした場合)。
・サーバーNet-Libraryで設定したポート番号と同じ番号にクライアントが接続しにいくこと(既定値は1433)。

また、同一のユーザーアカウントやGUESTアカウントなどは、Windows認証でログオンしない限り必要ありません。たとえばPERTHのクエリアナライザでBRISBANE のSQL Server 2000にWindows認証でアクセスした場合を考えてみましょう。UserAを作成しない状況下では、画面9のエラーメッセージが表示されます。

■ 画面9 エラーメッセージ
(図)エラーメッセージ

上記のように TCP/IP ソケットで Windows 認証に失敗した場合は、(null) のログインに失敗しました、というエラーメッセージが表示されます。ログインを試みたユーザー名がエラーメッセージに含まれない点は少々分かりづらいかもしれません。

もちろん名前つきパイプと同様に、GUESTアカウントを有効にし、そのGUESTに対するWindows認証アカウントを作成しなかった場合は画面7のエラーメッセージが表示され、UserAを作成し、そのUserAに対するWindows認証アカウントを作成しなかった場合は画面8のエラーメッセージが表示されます。



〜最後に〜


今回ご紹介した内容は「SQL Server 2000」というよりも、むしろ「Windows 2000」の解説とも言えます。いくらSQL Server 2000がデータベースだからといって、OSを知らなくて良いわけではありません。特にOracleユーザーの方はWindowsに携わったことがない方も多いと思いますが、これを機会にSQL Serverはもちろんのこと、Windowsもしっかり勉強してください。

また、今回はワークグループ環境を想定してご紹介しましたが、ドメイン環境の場合もこの解説を基本として応用してみてください。




・ 第1回 リモートからSQL Server 2000にアクセスできない?
・ 第2回 ディスクの空き領域がなくなる?
・ 第3回 権限があるのにアクセスできない?
・ 第4回 ジョブが失敗する?
・ 第5回 ログは自動でアーカイブされないの?
・ 第6回 メモリサイズは調整できないの?


著者プロフィール
鈴木 智行(SUZUKI, Tomoyuki)
NEC Eラーニング事業部
http://www.sw.nec.co.jp/el/

入社以来、インストラクタとして教育業務に従事。SQL Serverには、4.21aから携わる。最近はデータベースグループの一員として、より大きな見地からデータベースを担当。

← 特集!DBバイリンガル 目次

PASSJメールニュース 著作権ついて プライバシーポリシー リンクポリシー お問い合わせ
(C) 2005 Professional Association for SQL Server Japan. All rights reserved.