概要

この更新プログラムでは、Windows の SQL Server 2017、 Service pack 4 FOR Sql server 2012、Microsoft Sql Server 2014 Service Pack 2sql server 2016 SP1で、新しい管理コマンドDBCC CLONEDATABASE (transact-sql) が導入されています。 このコマンドを実行すると、指定したソースデータベースのすべてのオブジェクトと統計のスキーマを含む新しいデータベースが作成されます。 

注: SQL Server 2014 環境では、DBCC を使用して、Filestream、FileTable、共通言語ランタイム (CLR) オブジェクトを複製し、NO_STATISTICS オプションで複製する機能を利用できるように、 Sql server 2014 SP2 の累積更新プログラム 3 をインストールする必要があります。

SQL Server の service pack について

 

サービスパックは累積されます。 Service Pack は累積的であり、 最新の Service Pack には新しい修正プログラムと共に、それ以前の Service Pack に含まれていたすべての修正プログラムが含まれています。 このサービスパックの最新の service pack と最新の累積的な更新プログラムを適用することをお勧めします。 最新の service pack をインストールする前に、以前のサービスパックをインストールする必要はありません。 最新の service pack と最新の累積的な更新プログラムの詳細については、次の記事の表1を参照してください。

SQL Server とそのコンポーネントのバージョン、エディション、更新レベルを確認する方法

DBCC CLONEDATABASE について

Microsoft カスタマサポートサービスでは、クエリオプティマイザーに関連するパフォーマンスの問題を調査するために、 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この引数は、テーブル/インデックスの統計情報を複製で除外する必要があるかどうかを指定します。 このオプションが指定されていない場合は、テーブル/インデックスの統計情報が自動的に含まれます。 このオプションは、SQL Server 2014 SP2 CU3 以降でおよび SQL Server 2016 Service Pack 1 以降で利用できます。

  • NO_QUERYSTOREこの引数は、クエリストアを複製で除外する必要があるかどうかを指定します。 このオプションが指定されていない場合、ソースデータベースで有効になっている場合、クエリストアデータはクローンにコピーされます。 このオプションは、SQL Server 2016 Service Pack 1 以降で利用できます。

DBCC CLONEDATABASE を使用するにはどうすればよいですか?

DBCC CLONEDATABASE を使用して、クエリのパフォーマンスの問題を調査するために、運用データベースのスキーマと統計情報のみのコピーを作成します。 次の制限とサポートされているオブジェクトに注意してください。

  • 課す以下の検証は、 DBCC CLONEDATABASEによって実行されます。 いずれかの検証に失敗した場合、コマンドは失敗します。

    • ソースデータベースはユーザーデータベースである必要があります。 システムデータベース (master、model、msdb、tempdb、ディストリビューションデータベースなど) の複製は許可されていません。

    • ソースデータベースは、オンラインまたは読み取り可能である必要があります。

    • 複製データベースと同じ名前を使用するデータベースは、まだ存在していない必要があります。

    • コマンドがユーザートランザクションに含まれていません。

    すべての検証が成功すると、 DBCC CLONEDATABASE は次の操作を実行します。

    • プライマリデータファイルとログファイルを作成する

    • セカンダリ dataspaces の追加

    • セカンダリファイルの追加

    注: ターゲットデータベースのすべてのファイルは、モデルデータベースのサイズと増加の設定を継承します。 ファイル名の規則: ターゲットデータベースのファイル名は、 source_file_name _underscore_random 番号 の規則に従っています。 生成されたファイル名が保存先フォルダーに既に存在する場合、 DBCC CLONEDATABASE は失敗します。

  • 内部データベーススナップショットDBCC CLONEDATABASE は、コピーを実行するために必要なトランザクション一貫性を維持するために、ソースデータベースの内部データベーススナップショットを使用します。 これにより、これらのコマンドを実行しても、ブロックと同時実行の問題を回避できます。 スナップショットを作成できない場合、 DBCC CLONEDATABASE は失敗します。 データベースレベルのロックは、コピー処理の次の手順で保持されます。

    • ソースデータベースを検証する

    • ソースデータベースに対して S ロックを取得する

    • ソースデータベースのスナップショットを作成する

    • 複製データベースを作成する (モデルから継承する空のデータベース)

    • Clone データベースの X ロックを取得する

    • メタデータを複製データベースにコピーする

    • すべてのデータベースのロックを解除する

    コマンドの実行が完了するとすぐに、内部スナップショットが削除されます。 複製されたデータベースでは、信頼性とDB_CHAININGのオプションが無効になっています。

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

エクスポート先のデータベースでは、次のオブジェクトスキーマのみが複製されます。 暗号化されたオブジェクトは複製されますが、このバージョンの SQL Server の clone ではサポートされません。 次のセクションに記載されていないオブジェクトは、複製でサポートされていません。

  • アプリケーションロール

  • 可用性グループ

  • 列ストアインデックス

  • CDB

  • CDC

  • 変更の追跡 (SQL SERVER 2016 SP2 CU10、SQL server 2017 CU17、SQL server 2019 CU1 以降のバージョン)

  • CLR (SQL Server 2014 SP2 CU3 以降で、SQL Server 2016 Service Pack 1 以降のバージョン)

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

  • 設定

  • ファイルとファイルグループ

  • 完全なテキスト (SQL Server 2016 SP1 CU2 の開始)

  • 関数

  • 位置

  • LOGIN

  • PARTITION 関数

  • パーティション構成

  • 手順 注 SQL Server 2014 SP2 を開始するすべてのリリースでは、t-sql プロシージャがサポートされています。 CLR の手順は、SQL Server 2014 SP2 CU3 以降での開始時にサポートされています。 ネイティブにコンパイルされたプロシージャは、SQL Server 2016 SP1 以降でサポートされています。

  • クエリストア (SQL Server 2016 Service Pack 1 以降のバージョンのみ) 注 クエリストアは、ソースデータベースで有効になっている場合にのみコピーされます。 クエリストアの一部として最新のランタイムの統計情報をコピーするには、 sp_query_store_flush_db を実行して、DBCC CLONEDATABASE を実行する前に、クエリストアに対して実行時の統計情報をフラッシュします。

  • 職種

  • ルール

  • 方式

  • 動作

  • 空間インデックス

  • 状況

  • 同意語

  • '95'5C

  • メモリ最適化テーブル (SQL Server 2016 SP1 およびそれ以降のバージョンのみ)。

  • FILESTREAM と FILETABLE オブジェクト (SQL Server 2014 SP2 CU3 以降で、SQL Server 2016 SP1 以降のバージョン)。

  • 要件

  • 種類

  • アップグレードされたデータベース

  • ユーザーズ

  • XML インデックス

  • XML スキーマコレクション

 

権限

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

制限事項と考慮事項

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

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

複製されたデータベースのデータセキュリティに関する情報については、次のブログを参照してください。クローンされたデータベースのデータセキュリティについて説明します。

列ストアインデックスがある場合は、「DBCC CLONEDATABASEコマンドを実行する前に、クローンデータベースの列ストアインデックスを使ってクエリを調整して、列ストアインデックスの統計情報を更新する際の考慮事項を参照してください。

エラーログメッセージ

次のメッセージは、クローン処理中にエラーログに記録されます。

<Timestamp> ' sourcedb ' の spid53 データベースの複製は、ターゲットを ' sourcedb_clone ' として開始しています。 <timestamp> spid53 は、データベース ' sourcedb_clone ' を起動しています。 <のタイムスタンプ> データベース ' sourcedb_clone ' に対して、SPID53 のデータベースオプションを [信頼する] に設定されています。 <>タイムスタンプ DB_CHAINING sourcedb_cloneデータベース ' <' は複製されたデータベースです。 複製されたデータベースは、診断目的でのみ使用され、実稼働環境での使用はサポートされていません。 <Timestamp> "sourcedb" のデータベースの複製が終了しました。 複製されたデータベースは ' sourcedb_clone ' です。

データベースプロパティ

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

  1. スキーマ、統計、クエリストア (SQL Server 2016 SP1 以降のバージョン) を含む AdventureWorks データベースの複製を作成する

    Transact-SQL -- Generate the clone of AdventureWorks database.    DBCC CLONEDATABASE (AdventureWorks, AdventureWorks_Clone);    GO 
  2. SQL Server 2014 (SQL server 2014 SP2 CU3 以降で以降のバージョン) での AdventureWorks データベースのスキーマのみの複製の作成

    DBCC CLONEDATABASE (AdventureWorks, AdventureWorks_Clone) WITH NO_STATISTICS
  3. 統計とクエリストアを使わずに AdventureWorks データベースのスキーマのみの複製を作成する (SQL Server 2016 SP1 以降のバージョン)

    DBCC CLONEDATABASE (AdventureWorks, AdventureWorks_Clone) WITH NO_STATISTICS,NO_QUERYSTORE

参照情報

ソフトウェアの更新を説明するために Microsoft が使用する 用語 について説明します。

ヘルプを表示

スキルを磨く
トレーニングの探索
新機能を最初に入手
Microsoft Insider に参加する

この情報は役に立ちましたか?

翻訳品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?

フィードバックをお送りいただきありがとうございます!

×