SQL Server 2005 と 2008 年の SQL Server の統計情報のみデータベースを作成するために必要なデータベース メタデータのスクリプトを作成する方法

文書翻訳 文書翻訳
文書番号: 914288
すべて展開する | すべて折りたたむ

目次

はじめに

Microsoft SQL Server 2005、または Microsoft SQL Server の 2008 年には、クエリ オプティマイザーが最適なクエリプランを決定するのには、次の種類の情報を使用します。
  • データベースのメタデータ
  • ハードウェア環境
  • データベースのセッション状態
通常、テスト システムでのクエリ オプティマイザーの動作を再現する場合は、これらのすべての同じ種類の情報をシミュレートする必要があります。

データベース メタデータのスクリプトを作成するのには、マイクロソフト カスタマー サポート サービスが要求されます。マイクロソフト カスタマー サポート サービスこのデータベース メタデータのスクリプトを使用して、オプティマイザーの問題を調査します。統計のスクリプトを生成するための手順について説明します。また、クエリ オプティマイザーが、情報を使用する方法も説明します。

詳細

スクリプトを生成するための手順を実行する前に、SQL Server 2005 を使用すると、SQL Server Management Studio のバージョンを SQL Server 2005 Service Pack 2 またはそれ以降のバージョンであることを確認します。SQL Server 2005 の以前のバージョンの SQL Server Management Studio を使用すると、スクリプト ウィザードが正常に動作するために必要なオプションをすべてこの資料の手順ではありません。

データベース全体のスクリプト

データベースの統計情報のみのクローンを生成すると、簡単に信頼性の高い個々 のオブジェクトのスクリプトを作成するのではなく、データベース全体のスクリプトを作成する可能性があります。データベース全体のスクリプトにすると、次のメリットが表示されます。
  • この問題を再現するために必要な依存オブジェクトが不足している問題を回避します。
  • 数が極めて少なく手順を必要なオブジェクトを選択する必要があります。
メモ データベースのスクリプトを生成し、データベースのメタデータに何千ものオブジェクトが含まれている場合は、スクリプトのプロセスが CPU リソースを消費します。オフピーク時にスクリプトを生成することをお勧めします。また、個々 のオブジェクトに対してスクリプトを生成するのには、2 番目のオプションを使用できます。

クエリで参照されている各データベース スクリプトを作成するには、次の手順を実行します。
  1. SQL Server Management Studio を開きます。
  2. で、 オブジェクト エクスプ ローラーを展開 データベース、し、スクリプトを作成データベースを探します。
  3. データベースを右クリックし、ポイント タスク、し スクリプトを生成します。.
  4. スクリプト ウィザードでは、正しいデータベースが選択されていることを確認します。オンにし、 選択したデータベース内の全オブジェクトをスクリプトします。 チェック ボックスをオンにしをクリックしてください 次へ.
  5. で、 スクリプト オプションを選択します。 ダイアログ ボックスで、次の表に記載されている値が既定値から次の設定を変更します。
    元に戻す全体を表示する
    スクリプト オプション値を選択するのには
    Ansi の埋め込みTrue を指定します。
    エラーはスクリプトを続行します。True を指定します。
    依存オブジェクトのスクリプトを生成します。True を指定します。
    システムの制約名を含めるTrue を指定します。
    スクリプトの照合順序True を指定します。
    データベース スクリプトを作成します。True を指定します。
    スクリプト ログインTrue を指定します。
    スクリプト オブジェクト レベルのアクセス許可True を指定します。
    スクリプトの統計情報統計とヒストグラムのスクリプトを作成
    インデックス スクリプト]True を指定します。
    スクリプトのトリガーTrue を指定します。
    メモ は、 スクリプト ログイン オプションとは スクリプト オブジェクト レベルのアクセス許可 スキーマ以外のログインを自分が所有するオブジェクトが含まれている場合を除いて必要させることはできません。 dbo.
  6. クリックしてください。 次へ.
  7. クリックして、 スクリプトをファイルに クリックして、[ファイル名を入力します。
  8. クリックしてください。 終了日.

個々 のオブジェクトのスクリプト

データベース全体のスクリプトを作成するのではなく、特定のクエリによって参照されるスクリプト個別オブジェクトのみできます。すべてのデータベースの場合ただしに SCHEMABINDING 句は、依存関係の情報を使用して作成されたオブジェクトが sys.depends システム テーブルは、常に正確ではありません。この不正確にいずれか、次の問題があります。
  • スクリプトの処理に、依存オブジェクトをスクリプトされません。
  • スクリプトの処理を正しい順序でオブジェクトのスクリプト可能性があります。スクリプトを正常に実行するには、生成されたスクリプトを手動で編集する必要があります。
そのため、当社データベースに多数のオブジェクトがあるし、スクリプト作成特に長時間を要する場合を除いて、個々 のオブジェクトをスクリプトすること勧めしません。個々 のオブジェクトのスクリプトを使用する必要がある場合は、次の手順を実行します。
  1. SQL Server の Management Studio でを展開します。 データベース、し、スクリプトを作成データベースを探します。
  2. データベースを右クリックし、ポイント データベース スクリプト、ポイント 作成するのには、し ファイル.
  3. ファイルの名前を入力しをクリックしてください 保存.

    コア データベース コンテナーがスクリプト化されます。このコンテナーには、ファイル、ファイル グループ、データベース、およびプロパティが含まれます。
  4. データベースを右クリックし、ポイント タスク、し スクリプトを生成します。.
  5. 正しいデータベースが選択されていることを確認しをクリックしてください 次へ.
  6. で、 スクリプト オプションを選択します。 ダイアログ ボックスで、次の表に記載されている値が既定値から次の設定を変更します。
    元に戻す全体を表示する
    スクリプト オプション値を選択するのには
    Ansi の埋め込みTrue を指定します。
    エラーはスクリプトを続行します。True を指定します。
    システムの制約名を含めるTrue を指定します。
    依存オブジェクトのスクリプトを生成します。True を指定します。
    スクリプトの照合順序True を指定します。
    スクリプト ログインTrue を指定します。
    スクリプト オブジェクト レベルのアクセス許可True を指定します。
    スクリプトの統計情報統計とヒストグラムのスクリプトを作成
    スクリプトはデータベースを使用True を指定します。
    インデックス スクリプト]True を指定します。
    スクリプトのトリガーTrue を指定します。
    メモ は、 スクリプト ログイン オプションとは スクリプト オブジェクト レベルのアクセス許可 スキーマ以外のログインを自分が所有するオブジェクトが含まれている場合を除いて必要させることはできません。 dbo.
  7. で、 オブジェクトの種類を選択します。 すべてのデータベースに問題のあるクエリを参照するオブジェクトの種類] ダイアログ ボックス、選択します。

    たとえば、テーブルは参照している場合を選択します。 テーブル.クエリがビューを参照する場合を選択します。 ビューとテーブル.問題のあるクエリをユーザー定義関数を使用する場合を選択します。 関数.
  8. クエリによって参照されるすべてのオブジェクトの種類を選択したらをクリックします。 次へ.
  9. ダイアログ ボックスで手順 7 で選択したデータベース オブジェクトの種類が表示されます。各ダイアログ ボックスで、特定のテーブル、ビュー、関数、またはその他のデータベース オブジェクトを選択しをクリックしてください 次へ.
  10. クリックして、 スクリプトをファイルに クリックして、手順 3 で入力した同じファイル名を指定します。
  11. クリックしてください。 終了日 スクリプトを開始します。
スクリプトが完了すると、スクリプト ファイルは Microsoft のサポート エンジニアに送信します。マイクロソフトのサポート エンジニアは、次の情報も要求します。
  • プロセッサと物理メモリの容量が存在するなど、ハードウェアの構成
  • クエリを実行したときにアクティブな SET オプション
メモ この情報の SQLDiag レポートまたは SQL のプロファイラー トレースを送信することによって入力済み場合があります。また別の方法この情報を提供するのにが使用されます。

情報の使用方法

次の表は、クエリ オプティマイザーはクエリ プランを選択するのにはこの情報を使用する方法について説明できます。

メタデータ

元に戻す全体を表示する
制約クエリ オプティマイザーでクエリ、基になるスキーマの不一致を検出するのに制約を頻繁に使用します。クエリがある場合などは、"WHERE col = 5"句"チェック (col< 5)"="" check="" constraint="" exists,="" the="" query="" optimizer="" knows="" that="" no="" rows="" will="">

クエリ オプティマイザーは、null の使用可能性に関する控除の類似する種類になります。たとえば、"col が NULL"句に true または false は、列の null 値の許容によっては、外部結合の外側のテーブルの列かどう知られています。FOREIGN KEY 制約の基数とは、適切な結合順序を決定する場合に便利です。クエリ オプティマイザーは結合を排除または述語を簡略化するには、制約の情報を使用できます。これらの変更は、ベース テーブルにアクセスするための要件を削除できます。
統計情報統計情報には、密度と、先頭の列のインデックスと統計情報キーの分布を示すヒストグラムが含まれます。述語の性質によっては、クエリ オプティマイザーは、密度、ヒストグラム、またはその両方、述語の基数の推定できます。最新の統計情報は、正確な基数の見積もりを必要があります。カーディナリティの推定値は、演算子のコストを見積もるには、入力として使用されます。そのため、最適なクエリ プランを取得するのには、適切な基数予想が必要です。
テーブルのサイズ (行とページの数)クエリ オプティマイザーは、指定された述語が true または false である確率を計算するのには、ヒストグラムと密度を使用します。最終的な基数の見積もりは、確率に子演算子によって返される行の数を掛けて計算されます。テーブルまたはインデックスのページ数は、IO コストを予測する要因です。表のサイズを使用して、スキャンのコストを計算して、インデックスのシーク中にアクセスされるページの数を判断するときに便利です。
データベース ・ オプションデータベース ・ オプションのいくつかの最適化に影響を与えます。は、 AUTO_CREATE_STATISTICSAUTO_UPDATE_STATISTICS オプションは、新しい統計情報または古い統計の更新、クエリ ・ オプティマイザーを作成するかどうかに影響します。は、 パラメーター化 入力クエリがクエリ オプティマイザーに渡される前に、入力したクエリがパラメーター化される影響を与えます。パラメーターは、基数の推定に影響を与えることができに一致するインデックス付きのビューおよびその他の最適化を防ぐこともできます。は、 DATE_CORRELATION_OPTIMIZATION 設定は、列間の相関関係を検索するのには、オプティマイザーが発生します。この設定は、基数およびコストの推定に影響します。

環境

元に戻す全体を表示する
セッションの SET オプションは、 ANSI_NULLS かどうかに影響を設定、"NULL NULL ="式の評価結果として true。外部結合の基数の見積もりによって現在の設定を変更できます。さらに、あいまいな式も変更可能性があります。など、"col NULL ="設定とは異なるに基づいて式として評価されます。ただし、"col IS NULL"式は常に同じ方法を評価します。
ハードウェア リソース並べ替えやハッシュ演算子のコストは SQL Server に使用できるメモリの相対的な量によって異なります。キャッシュよりもデータのサイズが大きい場合は、たとえば、クエリ オプティマイザー、データは常にスプールする必要があります知ってディスクにします。ただし、データのサイズがキャッシュよりはるかに小さい場合は、操作がメモリ内で実行する可能性が高いです。SQL Server も考慮されます最適化の異なるサーバーを 1 つ以上のプロセッサがある場合は、並列処理"MAXDOP"ヒントを使用して無効になっているいない場合、または、 並列処理の最大程度 構成オプションです。
SQL Server の株式の単位 (SKU) を保持します。特定の機能は、特定のエディションの SQL Server 2005 や 2008 年の SQL Server でのみ有効になります。たとえば、インデックス付きのビューに対してクエリに一致するだけ SQL Server 2005 Enterprise Edition で発生します。同様に、計画ガイドと一致する SQL Server 2000 Standard Edition および SQL Server 2005 Enterprise Edition に限定されます。

プロパティ

文書番号: 914288 - 最終更新日: 2011年8月4日 - リビジョン: 7.0
キーワード:?
kbhowto kbinfo kbexpertiseadvanced kbexpertiseinter kbsql2005engine kbmt KB914288 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:914288
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com