第1回 SQL Serverのインストールをチェックする:SQL Serverミニマム管理Q&A(2/3 ページ)
SQL Serverの管理をまかされたけれど、SQL Serverって難しそうで何だかよく分からない。そんなビギナー管理者に贈るQA連載開始! まずはSQL Serverがインストールされているかどうか確認するところから始めよう。
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インスタンスなどの制限がある。
クライアント・アプリケーションからは、どれか特定の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が適用されているかなどを調べるためには、すべてのインスタンスを列挙する必要がある。
といっても、検出方法は先ほどのQ1やQ2と同じである。サービスの一覧を列挙して、「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の内部で各インスタンスを識別するために利用されている(Q5、Q6も参照)。
以上の方法で、SQL Serverがインストールされているかどうかが分かったが、どのエディション/バージョン/Servicek Packがインストールされているかを知るには、ファイルのバージョンを調べたり、SQL Serverサービスに接続したりする必要がある。その方法については次回解説する。
Copyright© Digital Advantage Corp. All Rights Reserved.