DBCC CLONEDATABASE を使用して SQL Server でユーザー データベースのスキーマとの統計情報のみコピーを作成する方法

適用対象: SQL Server 2014 Business IntelligenceSQL Server 2014 Business IntelligenceSQL Server 2014 Developer 詳細

概要


この更新プログラムは、Windows、 SQL Server 2012 では、サービス パック 4Microsoft SQL Server 2014 Service Pack 2およびSQL Server 2016 SP1で 2017 を SQL Server でDBCC CLONEDATABASE (Transact SQL) を新しい管理コマンドを紹介します。このコマンドは、スキーマのすべてのオブジェクトと指定したソース データベースからの統計情報を含む新しいデータベースを作成します。
注: 2014 の SQL Server 環境では、Filestream、FileTable、および共通言語ランタイム (CLR) オブジェクトのクローンを作成して、DBCC を使用して、NO_STATISTICS オプションを使用してクローンを作成する機能を取得するSQL Server の 2014 SP2 用の累積的な更新 3をインストールする必要があります。
 
SQL Server のサービス パックについて


 

DBCC CLONEDATABASE について


マイクロソフト カスタマー サポート サービスのクエリ オプティマイザーに関連するパフォーマンスの問題を調査するためにDBCC CLONEDATABASEを使用してデータベースのクローンを生成することでしょう。

注: DBCC CLONEDATABASEから生成され、新しく生成されたデータベースは、運用データベースとして使用するのにはサポートされていませんし、トラブルシューティングおよび診断の目的は、主にします。データベースを作成した後、クローンとして作成されたデータベースをデタッチすることをお勧めします。

ソース データベースのクローン作成は、次の操作によって実行されます。
  • Model データベースとソースが既定のファイルのサイズと同じファイルのレイアウトを使用する新しいレプリケーション先データベースを作成します。
  • ソース データベースの内部のスナップショットを作成します。
  • システム メタデータをソースから出力先データベースにコピーします。
  • ソースからすべてのオブジェクトのすべてのスキーマを転送先のデータベースにコピーします。
  • ソースから転送先のデータベースのすべてのインデックスの統計情報をコピーします。

構文


DBCC CLONEDATABASE (source_database_name, target_database_name)[WITH [NO_STATISTICS][,NO_QUERYSTORE]] 

引数


  • source_database_name

    この引数は、スキーマと統計情報をコピーする必要があるデータベースの名前です。
  • target_database_name

    この引数は、スキーマと変換元データベースからの統計情報がコピーされるデータベースの名前です。このデータベースでは、 DBCC CLONEDATABASEで作成され、既に存在する必要があります。
  • NO_STATISTICS

    場合に、この引数が指定テーブルまたはインデックスの統計情報でクローンを除外する必要があります。このオプションを指定しない場合は、テーブルとインデックスの統計情報が自動的に含まれます。このオプションは 2014 SP2 CU3 の SQL Server と SQL Server 2016 Service Pack 1 を開始します。
  • NO_QUERYSTORE

    クエリがクローンで除外する必要がありますを格納するかどうかは、この引数で指定します。このオプションを指定しないと、ソース データベースで有効になっている場合に、クエリがデータを格納がクローンにコピーします。このオプションは SQL Server 2016 Service Pack 1 で開始できます。

DBCC CLONEDATABASE を使用する場合でしょうか。


クエリ パフォーマンスの問題を調査するためには、専用のコピーを運用データベースのスキーマおよび統計情報を作成するのにはDBCC CLONEDATABASEを使用してください。次の制限事項とサポートされているオブジェクトの対応になります。
  • 制限

    DBCC CLONEDATABASEでは、次の検証が実行されます。検証が失敗した場合、コマンドが失敗します。
    • ソース データベースは、ユーザー データベースである必要があります。(マスター、モデル、msdb、tempdb、ディストリビューション データベースなど)、システム データベースのクローン作成が許可されていません。
    • ソース データベースは、オンラインまたは読み取り可能にする必要があります。
    • クローン ・ データベースと同じ名前を使用するデータベースが既に存在しない必要があります。
    • ユーザー トランザクション内でコマンドがありません。


    すべての検証が失敗した場合は、 DBCC CLONEDATABASEは次の操作を実行します。
    • プライマリ データ ファイルとログ ファイルを作成します。
    • 第 2 の dataspaces を追加します。
    • セカンダリ ファイルを追加します。

    注: ターゲット ・ データベース内のすべてのファイルは model データベースのサイズと拡張の設定を継承します。ファイル名の規則: 転送先のデータベースのファイル名はsource_file_name _underscore_random の数の規則に従ってが。保存先フォルダーに生成されたファイル名が既に存在する場合は、 DBCC CLONEDATABASEは失敗します。
  • 内部データベース スナップショット

    DBCC CLONEDATABASEは、コピーを実行するために必要なトランザクションの一貫性を保つのため、内部データベース スナップショットのソース データベースを使用します。これは、これらのコマンドを実行すると、ブロックと同時実行の問題を防ぎます。スナップショットを作成できない場合は、 DBCC CLONEDATABASEは失敗します。

    データベース レベル ロックは、中に次のコピー ・ プロセスの手順を実行します。
    • ソース データベースを検証します。
    • ソース データベースの S ロックを取得します。
    • ソース データベースのスナップショットを作成します。
    • (これは、空のデータベース モデルを継承する) データベースのクローンを作成します。
    • クローン ・ データベースのロックをすると X
    • クローン ・ データベースにメタデータをコピーします。
    • DB のすべてのロックを解除します。

    コマンドの実行が終了するとすぐには、内部のスナップショットが削除されます。TRUSTWORTHYDB_CHAININGのオプションは、クローンとして作成されたデータベース上で電源が切れます。

サポートされているオブジェクト


次のオブジェクトのスキーマのみが転送先データベースのクローンを作成します。暗号化されたオブジェクトは、複製が、クローンでは、SQL Server のこのリリースでサポートされていません。次のセクションにも記載されていないすべてのオブジェクトがサポートされていないクローンが作成されたの。
  • アプリケーション ロール
  • 可用性グループ
  • COLUMNSTORE インデックス
  • CDB
  • CDC
  • CLR が始まる 2014 SP2 CU3 の SQL Server、SQL Server 2016 Service Pack 1 およびそれ以降のバージョン)
  • データベースのプロパティ
  • DEFAULT を DEFAULT に変更します。
  • ファイルとファイル グループ
  • (2016 SP1 CU2 の SQL Server を起動する) 完全なテキスト
  • 関数
  • インデックス
  • ログイン
  • パーティション関数
  • パーティション構成
  • 手順
    注: T SQL のプロシージャは 2014 SP2 の SQL Server を起動するすべてのリリースでサポートされています。2014 SP2 CU3 の SQL Server を起動する、CLR プロシージャがサポートされていること。2016 SP1 の SQL Server を起動する、ネイティブにコンパイルされたプロシージャがサポートされていること。
  • クエリのストアだけで SQL Server 2016 Service Pack 1 およびそれ以降のバージョン)
    注: ストアのクエリは、ソース データベースで有効になっている場合にのみコピーされます。ストアのクエリの一部として、最新の実行時統計情報をコピーするには、DBCC CLONEDATABASE を実行する前にクエリ ストアを実行時の統計情報をフラッシュするのにはsp_query_store_flush_dbを実行します。
  • ロール
  • ルール
  • スキーマ
  • シーケンス
  • 空間インデックス
  • 統計情報
  • シノニム
  • テーブル
  • メモリ最適化の (テーブルのみ SQL Server 2016 SP1 およびそれ以降のバージョン)。
  • FILESTREAM オブジェクトおよびファイル テーブル オブジェクト (SQL Server の 2014 SP2 CU3 を開始、SQL Server 2016 SP1 およびそれ以降のバージョン)。
  • トリガー
  • タイプ
  • DB のアップグレード
  • ユーザー
  • ビュー
  • XML インデックス
  • XML スキーマ コレクション

アクセス許可


Sysadmin固定サーバー ロールのメンバーシップを持っている必要があります。

制限と注意事項


DBCC CLONEDATABASE は、model データベースで作成されたユーザー オブジェクト (テーブル、インデックス、スキーマ、ロール、およびなど) がある場合、クローンの作成をサポートしていません。ユーザー オブジェクトを model データベース内に存在場合は、データベース ・ クローンは次のエラー メッセージで失敗します。

Msg 2601、レベル 14、状態 1、行 1
一意インデックス 'インデックス名' を持つオブジェクト< システム テーブル >には、重複するキー行を挿入できません。重複するキー値は、 < キー >

クローン ・ データベースでデータのセキュリティに関連する情報は、次のブログを参照してください。
複製されたデータベースのデータのセキュリティを理解することです。

インデックスを格納する列がある場合は、次のブログを参照してください。
Columnstore インデックスのクローン ・ データベースでクエリをチューニングする際の考慮事項 DBCC CLONEDATABASEコマンドを実行する前に、columnstore インデックスの統計情報を更新します。

エラー ログ メッセージ


クローン作成プロセス中に次のメッセージがエラー ログに記録されます。

<タイムスタンプ> spid53 データベースのクローン作成の 'sourcedb' と、'sourcedb_clone' としてのターゲットとされました。

<タイムスタンプ> spid53 データベース 'sourcedb_clone' を起動します。

<タイムスタンプ> spid53 設定データベース ・ オプション off TRUSTWORTHY データベース 'sourcedb_clone' のです。

<タイムスタンプ> spid53 設定データベース ・ オプションをオフに DB_CHAINING 'sourcedb_clone' のデータベースの。

<タイムスタンプ> spid53 データベース 'sourcedb_clone' を起動します。

<タイムスタンプ> spid53 データベース 'sourcedb_clone' は、クローンとして作成されたデータベースです。クローンとして作成されたデータベースは診断用にのみ使用する必要があり、本番環境での使用はサポートされていません。

<タイムスタンプ> spid53 データベースの 'sourcedb' のクローン作成が完了しました。クローンのデータベースは、'sourcedb_clone' です。

データベース ・ プロパティ


IsClone新しいデータベース ・ プロパティが追加されます。DATABASEPROPERTYEX ('dbname'、'IsClone')は、 DBCC CLONEDATABASEを使用してデータベースが生成される場合に1を返します。


  1. AdventureWorks データベースのクローンを作成するスキーマが含まれています、統計情報、クエリ (SQL Server の 2016 SP1 およびそれ以降のバージョン) を保存
    Transact-SQL 
    -- Generate the clone of AdventureWorks database.
    DBCC CLONEDATABASE (AdventureWorks, AdventureWorks_Clone);
    GO
  2. 統計 (2014 SP2 CU3 の SQL Server およびそれ以降のバージョン) の SQL Server の 2014 年の AdventureWorks データベースのスキーマだけのクローンを作成します。
    DBCC CLONEDATABASE (AdventureWorks, AdventureWorks_Clone) WITH NO_STATISTICS
  3. 統計情報およびクエリ (SQL Server の 2016 SP1 およびそれ以降のバージョン) を保存せずに AdventureWorks データベースのスキーマだけのクローンを作成します。
    DBCC CLONEDATABASE (AdventureWorks, AdventureWorks_Clone) WITH NO_STATISTICS,NO_QUERYSTORE

関連情報


Microsoft がソフトウェア更新プログラムを説明するために使用される用語について説明します。