ワークロードを作成する方法
ワークロードとは、チューニングする 1 つ以上のデータベースに対して実行する一連の Transact-SQL ステートメントです。データベース エンジン チューニング アドバイザのグラフィカル ユーザー インターフェイス (GUI) と dta コマンド ライン ユーティリティでは、データベースのチューニング時に、トレース ファイル、トレース テーブル、または Transact-SQL スクリプトがワークロード入力として使用されます。ワークロードは XML 入力ファイルにも埋め込むことができます。XML 入力ファイルでは、各イベントの重みも指定できます。インライン ワークロードの指定の詳細については、「XML 入力ファイルを使用したチューニング」を参照してください。
MicrosoftSQL Server Management Studio のクエリ エディタ、または使い慣れたテキスト エディタを使用して、Transact-SQL スクリプト ワークロードを作成できます。トレース ファイルまたはトレース テーブル ワークロードを作成するには、SQL Server Profiler を使用します。データベース エンジン チューニング アドバイザでは、サーバーのクエリ パフォーマンスを向上させるインデックスやパーティション分割ストラテジを推奨するために、これらのワークロードが分析されます。
注意 |
---|
ワークロードとしてトレース テーブルを使用する場合、そのテーブルは、データベース エンジン チューニング アドバイザがチューニングを実行するサーバーと同じサーバー上に存在する必要があります。別のサーバーにトレース テーブルを作成した場合は、データベース エンジン チューニング アドバイザでチューニングされているサーバーに移動します。 |
SQL Server Management Studio のクエリ エディタを使用して、Transact-SQL スクリプト ワークロードを作成するには
SQL Server Management Studio でクエリ エディタを起動します。この手順の実行方法の詳細については、「SQL Server Management Studio でのスクリプトやファイルの編集」を参照してください。
クエリ エディタに Transact-SQL スクリプトを入力します。このスクリプトには、チューニングする 1 つ以上のデータベースに対して実行する一連の Transact-SQL ステートメントが含まれている必要があります。.sql 拡張子を付けて、ファイルを保存します。データベース エンジン チューニング アドバイザ GUI やコマンド ライン ユーティリティでは、この Transact-SQL スクリプトをワークロードとして使用できます。
SQL Server Profiler を使用してトレース ファイル ワークロードやトレース テーブル ワークロードを作成するには
次の方法のいずれかを使用して、SQL Server Profiler を起動します。
[スタート] ボタンをクリックし、[すべてのプログラム]、[Microsoft SQL Server]、[パフォーマンス ツール] の順にポイントして、[SQL Server Profiler] をクリックします。
SQL Server Management Studio で [ツール] メニューをクリックし、次に [SQL Server Profiler] をクリックします。
次の手順では、SQL Server Profiler の Tuning テンプレートを使用して、トレース ファイルまたはトレース テーブルを作成します。
トレース結果をファイルに保存する方法 (SQL Server Profiler)
データベース エンジン チューニング アドバイザでは、ワークロード トレース ファイルはロールオーバー ファイルであると想定されます。ロールオーバー ファイルの詳細については、「トレース ファイルとテーブル サイズの制限」を参照してください。
トレース結果をテーブルに保存する方法 (SQL Server Profiler)
トレース テーブルをワークロードとして使用する前に、トレースが停止していることを確認してください。
データベース エンジン チューニング アドバイザ用のワークロードをキャプチャするには、SQL Server Profiler の Tuning テンプレートを使用することをお勧めします。
独自のテンプレートを使用する場合、使用している SQL Server のバージョンで、次のトレース イベントがキャプチャされるようにしてください。
SQL Server 2005 以降 :
RPC:Completed
SQL:BatchCompleted
SP:StmtCompleted
SQL Server 2000:
RPC:Completed
SQL:BatchCompleted
これらのトレース イベントの Starting バージョンを使用することもできます。たとえば、SQL:BatchStarting などです。ただし、これらのトレース イベントの Completed バージョンには、Duration 列が含まれているので、データベース エンジン チューニング アドバイザは、より効率的にワークロードのチューニングを行うことができます。データベース エンジン チューニング アドバイザは、他の種類のトレース イベントのチューニングは行いません。これらのトレース イベントの詳細については、「Stored Procedures イベント カテゴリ」および「TSQL イベント カテゴリ」を参照してください。SQL トレース ストアド プロシージャを使用したトレース ファイル ワークロードの作成の詳細については、「トレースを作成する方法 (Transact-SQL)」を参照してください。
LoginName データ列を含んでいるトレース ファイル ワークロードまたはトレース テーブル ワークロード
データベース エンジン チューニング アドバイザは、チューニング処理の一環としてプラン表示要求を送信します。LoginName データ列が含まれているトレース テーブルまたはトレース ファイルをワークロードとして使用する場合、データベース エンジン チューニング アドバイザは、LoginName に指定されているユーザーの権限を借用します。トレースに含まれているステートメントに対してプラン表示を実行し生成するための SHOWPLAN 権限がそのユーザーに許可されていない場合、そのステートメントのチューニングは行われません。LoginName データ列の詳細については、「データ列を使用したイベントの説明」を参照してください。SHOWPLAN 権限の詳細については、「プラン表示のセキュリティ」を参照してください。
トレースの LoginName 列に指定された各ユーザーに SHOWPLAN 権限を許可しないようにするには
トレース ファイル ワークロードまたはトレース テーブル ワークロードをチューニングします。詳細については、「データベースをチューニングする方法」を参照してください。
権限が不適切だったためにチューニングされなかったステートメントがないかどうか、チューニング ログを確認します。詳細については、「チューニング ログについて」および「チューニング出力を表示する方法」を参照してください。
チューニングされなかったイベントから LoginName 列を削除することで、新しいワークロードを作成します。チューニングされなかったイベントのみを新しいトレース ファイルまたは新しいトレース テーブルに保存します。トレースからデータ列を削除する方法の詳細については、「トレース ファイルに含めるイベントとデータ列を指定する方法 (SQL Server Profiler)」または「既存のトレースを変更する方法 (Transact-SQL)」を参照してください。
LoginName 列が含まれていない新しいワークロードをデータベース エンジン チューニング アドバイザに再送信します。
トレースでログイン情報が指定されていないので、データベース エンジン チューニング アドバイザはこの新しいワークロードをチューニングします。ステートメントに LoginName が含まれていない場合、データベース エンジン チューニング アドバイザは、チューニング セッションを開始したユーザー (sysadmin 固定サーバー ロールまたは db_owner 固定データベース ロールのいずれかのメンバ) の権限を借用してステートメントをチューニングします。