SQL に関する Q&Aログインのトリガ、データ ファイルのデフラグなど

Nancy Michell

サービス アカウントを設定する

ヒント : より安全なパスワード

SQL Server 2000 エンジンでは、SQL Server のログインごとに 2 つのログイン パスワードを保持しています。1 つ目はユーザーによって入力された実際のパスワードで、2 つ目はすべて大文字のパスワードです。

この方法は、大文字と小文字を区別しないパスワードの検証で役に立ちます。なぜなら、ユーザーは大文字と小文字が混在するパスワードと大文字のみのパスワードのどちらを使用してもログインでき、サーバーへのアクセスが許可されるからです。ただし、この便利な機能には問題があります。すべて大文字のパスワードを保持すると、考えられるパスワードの数が減り、ブルート フォース攻撃によるパスワードの推測が容易になります。

SQL Server 2005 では元のパスワードのコピーのみが保持されます。ユーザーが入力するパスワードは、サーバーで保持されているパスワードと一致する必要があります。パスワードが一致しない場合は、ログインは失敗しユーザーのアクセスは拒否されます。大文字と小文字の使用を含め正確なパスワードの文字列を忘れてしまった場合は、パスワードをリセットする必要があります。

ユーザーのログイン名が SQLCOMMUNITY の場合、次のコマンドを使用して、この SQL Server ログインのパスワードをリセットすることができます。

Use Master;
ALTER LOGIN SQLCOMMUNITY WITH PASSWORD = 'k3t9h4s8wJF7t';

このコマンドは、SQL Server ログイン SQLCOMMUNITY のパスワードを k3t9h4s8wJF7t にリセットします。

質問 - SQL Server™ 2000 では、管理ツールのサービス アプレットで SQL Server エンジンと SQL Server エージェントのサービス アカウントを設定していました。SQL Server 2005 では、構成マネージャ ツールを使用する必要があるという話を耳にしました。どうして Windows のツールを使い続けることができないのでしょうか。

回答 - SQL Server 2005 は以前のバージョンよりもセキュリティを考慮したデザインになっています。多くの企業では、ユーザーは SQL Server を実行するために LocalSystem などの内部アカウントを設定しています。しかし、多くの場合、このようなアカウントは、ユーザーが必要とする Windows® の権利やアクセス許可のレベルを上回っているか、または下回っています。昇格した権限を持たない Windows アカウントを作成し、SQL Server 2005 エンジンと SQL Server 2005 エージェントのサービスを実行する必要があります。構成マネージャでサービス アカウントを選択すれば、SQL Server とオペレーティング システムの両方で適切な権利とアクセス許可が自動的に付与されます。Windows のツールを使用して SQL Server のサービスを管理すると、適切な権利が付与されないか、または過剰に権利を付与する可能性があります。

詳細については、「ヒント : サービス アカウントの変更」を参照してください。

サーバーにログオンしているユーザーを特定する

質問 - だれがいつサーバーにログオンしているか知りたいのですが。また、特定のユーザーについては特定の期間だけログオンできるように制限したり、トレースを起動してユーザーの操作を追跡する方法を知りたいのですが。このようなことは可能でしょうか。

回答 - はい、Service Pack 2 がインストールされていれば、SQL Server 2005 でこういったことをすべてできます。

SQL Server 2005 では、ログイン トリガを作成することができ、LOGON イベントに応じて T-SQL やストアド プロシージャを起動することができます。ログイン トリガを使用して、ログイン操作の追跡、SQL Server へのログインの制限、特定のログインに対するセッション数の制限などをすることによって、ユーザーを監査または制御することができます。LOGON イベントは、ログインが正常に認証された後にしか発生しませんが、発生するのは、ユーザー セッションが実際に確立される直前です。そのため、トリガ内部で発生したすべてのメッセージ (メッセージやエラーなど) は、PRINT ステートメントから SQL Server のエラー ログに送信されます。ログインの認証が失敗した場合は、ログオン トリガは起動しません。

次の例では、ログイン トリガの作成方法と、ユーザーがログインすると同時に SQL Server のエラー ログにメッセージを送信する方法を示します。

ALTER TRIGGER Ops_Login
ON ALL SERVER
AFTER LOGIN
AS
PRINT SUSER_SNAME() + ' has just logged in to ' + LTRIM(@@ServerName) + ' SQL Server at '+LTRIM(getdate())
GO

サーバー レベルで設定されたすべてのトリガを表示するには、次のクエリを使用します。

SELECT * FROM sys.server_triggers;

デフラグのベスト プラクティス

質問 - SQL Server のデータ ファイルの断片化を解消する最善の方法は何でしょうか。Windows のデフラグ ツールでは、SQL Server のデータ ファイルは 1 つのデータとして処理され、きめ細かい最適化は行われません。

回答 - データベースをバックアップして復元することで、SQL Server のデータ ファイルの断片化を解消できます。連続ファイルに空き領域が含まれる場合、データベースも連続して記述する必要があります。そうは言うものの、一般的に、物理ファイルを最適化しても、その際に生じるダウンタイムに値する成果は得られません。通常は多くの外部断片化がないのが、その理由です。定期的にデータのインデックスを再設定し、内部断片化をできるだけ減らすことの方が断片化の解消に役に立ちます。こうすると、先読みの効果とバッファされるデータの量を最大化できます。

効率的なディスク入出力を実現するうえで最も重要な要因は、ディスクの配置と RAID 構成が正しいことを確認し、I/O の負荷を適切に処理するようにディスク アレイをスケール変換し、Log、Data、TempDB、およびバックアップ ファイルのレイアウトを適切に管理することです。データ ファイルのサイズ管理の主な方法として、自動拡張と自動圧縮を使用しない場合は、作成されるボリューム レベルのファイルの断片の数は減少します。たとえば、500 MB ごとの自動拡張を 10 回実行すると、新たに 10 個の物理ファイルの断片が追加されるでしょう。これに対して、5 GB を手動で 1 回拡張した場合、追加されるファイルの断片は 1 つだけです。

ヒント : サービス アカウントの変更

SQL Server サービスのログイン アカウントを Windows NT® アカウントで構成する際、SQL Server では Windows ユーザーの権利やアクセス許可がいくつかのファイル、フォルダ、レジストリ キーに設定されることをご存知でしたか。また、管理ツールのサービス コンソールから SQL Server のサービス アカウントを設定することもできます。ただし、サービス コンソールを使用して SQL Server のサービス アカウントを設定すると、権利とアクセス許可は設定されません。そのため、前述の SQL Server と Windows アイテムの適切なセキュリティ設定の欠如により、深刻な問題が発生することがあります。

したがって、SQL Server や SQL Server エージェントのサービス アカウントを変更する場合は、サービス コンソールではなく SQL Server 構成マネージャを使用することを強くお勧めします。ただし、既にサービス コンソールを使用してアカウントを変更してしまった場合でも、この問題を解決することができます。

手順 1: 次のレジストリ キーとそのサブキーに完全な権限を適用します。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<MSSQL.x>

手順 2: 次の NTFS フォルダで、MSSQLServer サービスと SQLServerAgent サービス (ローカルの Windows NT のアカウントか ドメインの Windows NT のアカウントのどちらか) のスタートアップ アカウントにフル コントロールを設定します。

Drive:\Program Files\Microsoft SQL Server\<MSSQL.1>\MSSQL

ただし、SQL Server または SQL Server エージェントのサービス アカウントを変更する場合は、手動で行うのではなく、SQL Server 構成マネージャを使用することをお勧めします。

**技術的知識を提供してくれた次の Microsoft IT 技術支援スタッフの皆様に感謝します。**Cary Gottesman、Saleem Hakani、Trayce Jordan、Peter Kalbach、Al Noel、Uttam Parui、Amber Sitko、Buck Woody

© 2008 Microsoft Corporation and CMP Media, LLC. All rights reserved; 許可なしに一部または全体を複製することは禁止されています.