次の方法で共有


ワークロードを作成する方法

ワークロードとは、チューニングする 1 つ以上のデータベースに対して実行する一連の Transact-SQL ステートメントです。データベース エンジン チューニング アドバイザーのグラフィカル ユーザー インターフェイス (GUI) と dta コマンド ライン ユーティリティでは、データベースのチューニング時に、トレース ファイル、トレース テーブル、または Transact-SQL スクリプトがワークロード入力として使用されます。ワークロードは XML 入力ファイルにも埋め込むことができます。XML 入力ファイルでは、各イベントの重みも指定できます。インライン ワークロードの指定の詳細については、「XML 入力ファイルを使用したチューニング」を参照してください。

Microsoft SQL Server Management Studio のクエリ エディター、または使い慣れたテキスト エディターを使用して、Transact-SQL スクリプト ワークロードを作成できます。トレース ファイルまたはトレース テーブル ワークロードを作成するには、SQL Server Profiler を使用します。データベース エンジン チューニング アドバイザーでは、サーバーのクエリ パフォーマンスを向上させるインデックスやパーティション分割ストラテジを推奨するために、これらのワークロードが分析されます。

注意

ワークロードとしてトレース テーブルを使用する場合、そのテーブルは、データベース エンジン チューニング アドバイザーがチューニングを実行するサーバーと同じサーバー上に存在する必要があります。別のサーバーにトレース テーブルを作成した場合は、データベース エンジン チューニング アドバイザーでチューニングされているサーバーに移動します。

SQL Server Management Studio のクエリ エディターを使用して、Transact-SQL スクリプト ワークロードを作成するには

  1. SQL Server Management Studio でクエリ エディターを起動します。この手順の実行方法の詳細については、「SQL Server Management Studio でのスクリプトやファイルの編集」を参照してください。

  2. クエリ エディターに Transact-SQL スクリプトを入力します。このスクリプトには、チューニングする 1 つ以上のデータベースに対して実行する一連の Transact-SQL ステートメントが含まれている必要があります。.sql 拡張子を付けて、ファイルを保存します。データベース エンジン チューニング アドバイザー GUI やコマンド ライン ユーティリティでは、この Transact-SQL スクリプトをワークロードとして使用できます。

SQL Server Profiler を使用してトレース ファイル ワークロードやトレース テーブル ワークロードを作成するには

  1. 次の方法のいずれかを使用して、SQL Server Profiler を起動します。

    • [スタート] ボタンをクリックし、[すべてのプログラム][Microsoft SQL Server][パフォーマンス ツール] の順にポイントして、[SQL Server Profiler] をクリックします。

    • SQL Server Management Studio で [ツール] メニューをクリックし、次に [SQL Server Profiler] をクリックします。

  2. 次の手順では、SQL Server Profiler の Tuning テンプレートを使用して、トレース ファイルまたはトレース テーブルを作成します。

データベース エンジン チューニング アドバイザー用のワークロードをキャプチャするには、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 権限を許可しないようにするには

  1. トレース ファイル ワークロードまたはトレース テーブル ワークロードをチューニングします。詳細については、「データベースをチューニングする方法」を参照してください。

  2. 権限が不適切だったためにチューニングされなかったステートメントがないかどうか、チューニング ログを確認します。詳細については、「チューニング ログについて」および「チューニング出力を表示する方法」を参照してください。

  3. チューニングされなかったイベントから LoginName 列を削除することで、新しいワークロードを作成します。チューニングされなかったイベントのみを新しいトレース ファイルまたは新しいトレース テーブルに保存します。トレースからデータ列を削除する方法の詳細については、「トレース ファイルのイベントを設定する方法 (SQL Server Profiler)」または「既存のトレースを変更する方法 (Transact-SQL)」を参照してください。

  4. LoginName 列が含まれていない新しいワークロードをデータベース エンジン チューニング アドバイザーに再送信します。

トレースでログイン情報が指定されていないので、データベース エンジン チューニング アドバイザーはこの新しいワークロードをチューニングします。ステートメントに LoginName が含まれていない場合、データベース エンジン チューニング アドバイザーは、チューニング セッションを開始したユーザー (sysadmin 固定サーバー ロールまたは db_owner 固定データベース ロールのいずれかのメンバー) の権限を借用してステートメントをチューニングします。