連載
» 2012年02月23日 05時00分 公開

SQL Serverミニマム管理Q&A:第1回 SQL Serverのインストールをチェックする (2/3)

[打越浩幸,デジタルアドバンテージ]

Q2:SQL Serverがインストールされている場所を調べるには?

A:「SQL Server 構成マネージャー」でサービスのプロパティを調べるか、管理ツールがインストールされていない場合はサービスの構成情報を調査する。

 SQL Serverがインストールされていることが確認できたら、サービスの詳細設定を見ることにより、SQL Serverがどこにインストールされているかを確認できる。サービスの詳細は「sc qc <サービス名>」で確認できる(qcはquery configurationの略)。

C:\>sc qc "mssqlserver" ……sc qcコマンドでサービスの設定を調べる
[SC] QueryServiceConfig SUCCESS

SERVICE_NAME: mssqlserver ……サービス名
        TYPE               : 10  WIN32_OWN_PROCESS
        START_TYPE         : 2   AUTO_START
        ERROR_CONTROL      : 1   NORMAL
        BINARY_PATH_NAME   : "C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn\sqlservr.exe" -sMSSQLSERVER ……サービスとして登録されている実行ファイル名のパス
        LOAD_ORDER_GROUP   :
        TAG                : 0
        DISPLAY_NAME       : SQL Server (MSSQLSERVER)
        DEPENDENCIES       :
        SERVICE_START_NAME : LocalSystem



 BINARY_PATH_NAMEとして表示されているのが、サービスとして登録されている実行ファイルのフル・パス名である。このフォルダにこのSQL Server(のインスタンス)がインストールされている。

Q3:SQL Serverのインスタンスとは? SQL Serverのインスタンスとは?

A:SQL Serverの実行単位。1つのインスタンスで複数のデータベースを管理できるし、1台のシステムに複数のインスタンスをインストールすることも可能。インスタンスを変えれば、異なるバージョンのSQL Serverを1台のシステムに同時にインストールすることも可能。

  「インスタンス(instance。具現化という意味)」とは、インストールされたSQL Serverの実体のことであり、SQL Serverエンジンの実行単位である。SQL Serverのプログラムを1つインストールすると、インスタンスごとに固有のフォルダ中に実行ファイル群(サービスの実体)がコピーされ、サービスとして実行されるようになる。インスタンス1つごとに1つプロセス(SQL Serverサービス)が作成され、インスタンス単位で実行させたり、停止させたりできる。

 1つのインスタンス中には複数のデータベースを管理させることができるが、インスタンスを停止すると、その中に含まれるすべてのデータベースへアクセスできなくなる。

 1台のシステム中には複数のインスタンスをインストールできる。1つのエディションのSQL Serverを異なるインスタンスとして複数インストールしてもよいし、複数のエディションや複数のバージョン、複数のService Packレベル、異なる言語版のSQL Serverを別々のインスタンスとして、同時に1つのシステムにインストールすることもできる。1台のシステムにインストールできるインスタンス数は、SQL Serverのエディションにもよるが、最大で16とか25、50インスタンスなどの制限がある。

SQL Serverのインスタンス SQL Serverのインスタンス

 クライアント・アプリケーションからは、どれか特定の1つのインスタンスへ接続後、どのデータベースを使用するかを選択する。接続するインスタンスを識別/特定するためには「インスタンス名」を使用する。インスタンス名はSQL Serverのインストールの最初の段階でユーザーが指定するが、指定しない場合は「MSSQLSERVER」となる(これは「既定のインスタンス」と呼ばれる)。インスタンス名を指定してSQL Serverへ接続する方法は次回解説する。

 1台のコンピュータ上で複数のインスタンスを利用する理由には、さまざまなものがある。あるアプリケーションがSQL Serverの特定のバージョンやエディションに依存していたり、それ以外では検証されていないなどの理由で、特定のSQL Serverをインストールすることがある。またインストール時のトラブル回避やユーザーの利便性のために、あらかじめMSDEやExpress Edition(無償のエディション。関連記事参照)とセットにしてインストールするように設定されていることもある。このようなアプリケーションを利用していると、ユーザーの知らないうちにSQL Serverがインストールされていることがある。

Q4:複数のインスタンスがあるかどうか調べるには? 複数のインスタンスがあるかどうか調べるには?

A:「SQL Server 構成マネージャー」を使うか、SQLという名前が含まれているサービスの一覧を取得すると、複数のインスタンスが列挙できる。

 Q3で説明したように、さまざまな理由で複数のインスタンスがシステムにインストールされることがある。それらはすべて別々のサービスとしてインストールされるため、システムにSQL Serverがインストールされているか、どのエディションやService Packが適用されているかなどを調べるためには、すべてのインスタンスを列挙する必要がある。

 といっても、検出方法は先ほどのQ1Q2と同じである。サービスの一覧を列挙して、「SQL」と文字列が含まれるサービスを取り出せばよい。

※例。SQL Server 2008 R2 Express Editionの3つのインスタンスをインストールした、Windows Server 2008での結果

C:\>sc query | find /i "sql" ……「SQL」を含むサービスを検索
SERVICE_NAME: SQLWriter
DISPLAY_NAME: SQL Server VSS Writer
SERVICE_NAME: MSSQLSERVER ……インスタンス1のサービス名
DISPLAY_NAME: SQL Server (MSSQLSERVER) ……表示名1
SERVICE_NAME: MSSQL$SQLEXPRESS ……インスタンス2のサービス名
DISPLAY_NAME: SQL Server (SQLEXPRESS) ……表示名2
SERVICE_NAME: MSSQL$MYLOCALDB01 ……インスタンス3のサービス名
DISPLAY_NAME: SQL Server (MYLOCALDB01) ……表示名3

C:\>



 この例では、「MSSQLSERVER」「SQLEXPRESS」「MYLOCALDB01」という3つのインスタンスがインストールされていることが分かる。

■インストール・パスとインスタンスID

 3つのインスタンスがインストールされていても、インストール場所は異なるので、バイナリ・ファイルが衝突することはない(正確にいえば、別のインスタンスとしてインストールするためには、異なる場所を指定する必要がある)。たとえ同じエディション(同じバイナリ・ファイル)のSQL Serverをインストールする場合でも、異なるインスタンスとしてインストールすれば、異なる場所にもう一組のバイナリ・ファイルがインストールされる。ディスク容量的には非常に不利だが、分かりやすくて確実な方法ともいえる。インスタンスごとに設定を変えたり、異なるService Packを適用したりしても、お互いに影響を与えることはない。

 インストールされているパスをQ2の方法で確認してみよう。

※3つのインスタンスのパス

C:\>sc qc "mssqlserver"  | find "BINARY_PATH"
        BINARY_PATH_NAME   : "c:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Binn\sqlservr.exe" -sMSSQLSERVER

C:\>sc qc "mssql$sqlexpress"  | find "BINARY_PATH"
        BINARY_PATH_NAME   : "c:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\Binn\sqlservr.exe" -sSQLEXPRESS

C:\>sc qc "mssql$mylocaldb01"  | find "BINARY_PATH"
        BINARY_PATH_NAME   : "c:\Program Files\Microsoft SQL Server\MSSQL10_50.MYLOCALDB01\MSSQL\Binn\sqlservr.exe" -sMYLOCALDB01

C:\>cd C:\Program Files\Microsoft SQL Server  ……SQL Serverのインストール先へ移動

C:\Program Files\Microsoft SQL Server>dir ……フォルダの一覧を見る
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は B424-278F です

 C:\Program Files\Microsoft SQL Server のディレクトリ

2012/02/15  14:11    <DIR>          .
2012/02/15  14:11    <DIR>          ..
2012/02/15  13:40    <DIR>          100
2012/02/15  13:39    <DIR>          80
2012/02/15  13:39    <DIR>          90
2012/02/15  13:41    <DIR>          MSSQL10_50.MSSQLSERVER ……インスタンス1
2012/02/15  14:11    <DIR>          MSSQL10_50.MYLOCALDB01 ……インスタンス2
2012/02/15  13:57    <DIR>          MSSQL10_50.SQLEXPRESS ……インスタンス3
               0 個のファイル                   0 バイト
               8 個のディレクトリ  127,007,698,944 バイトの空き領域



 この例では、3つのインスタンスは、実際にはそれぞれ「MSSQL10_50.MSSQLSERVER」「MSSQL10_50.MYLOCALDB01」「MSSQL10_50.SQLEXPRESS」というフォルダにインストールされている。この名前(フォルダ名)は「インスタンスID」と呼ばれ、SQL Serverの内部で各インスタンスを識別するために利用されている(Q5Q6も参照)。

 以上の方法で、SQL Serverがインストールされているかどうかが分かったが、どのエディション/バージョン/Servicek Packがインストールされているかを知るには、ファイルのバージョンを調べたり、SQL Serverサービスに接続したりする必要がある。その方法については次回解説する。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。