データベースのはDBCCCLONEDATABASEを使用して作成され、指定されたデータベースのコピーのみのスキーマと統計を作成し、データのコピーは含まれません。
クローンの作成は、ソースを渡すのと同じくらい簡単です。データベース名とデータベース名をDBCCコマンドにクローンします。
DBCC CLONEDATABASE ('SansSQL', 'SansSQL_Clone')
DBCCコマンドの出力
クローン作成が完了すると、クローン作成されたデータベースは読み取り専用モードになります。
SELECT name, database_id, is_read_only FROM sys.databases WHERE name in ('SansSQL', 'SansSQL_Clone')
では、データベースでDBCC CLONEDATABASEコマンドを発行すると、実際にはどうなりますか?
クローンが作成される前のいくつかの検証。次の検証は、DBCCCLONEDATABASEによって実行されます。検証のいずれかが失敗すると、コマンドは失敗します。
- ソースデータベースはユーザーデータベースである必要があります。システムデータベース(マスター、モデル、msdb、tempdb、ディストリビューションデータベースなど)のクローン作成は許可されていません。
- ソースデータベースはオンラインまたは読み取り可能である必要があります。
- クローンデータベースと同じ名前を使用するデータベースは、まだ存在していてはなりません。
- コマンドはユーザートランザクションに含まれていません。
- プライマリデータファイルとログファイルの作成
- セカンダリデータスペースの追加
- セカンダリファイルの追加
SELECT database_id, file_id, type_desc, name, physical_name FROM sys.master_files WHERE DB_NAME(database_id) in ('SansSQL', 'SansSQL_Clone')
次に、DBCCCLONEDATABASEは次の手順で内部データベーススナップショットを実行します
- ソースデータベースを検証する
- ソースデータベースのSロックを取得する
- ソースデータベースのスナップショットを作成する
- クローンデータベースを作成します(これはモデルから継承する空のデータベースです)
- クローンデータベースのXロックを取得する
- メタデータをクローンデータベースにコピーします
- すべてのDBロックを解除する
SELECT DATABASEPROPERTYEX('SansSQL','isClone') AS SansSQL_DB_CloneStatus ,DATABASEPROPERTYEX('SansSQL_Clone','isClone') AS SansSQL_CloneDB_CloneStatus
参照:https://support.microsoft.com/en-in/kb/3177838