Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Utilisation de DBCC CLONEDATABASE pour générer une copie de schéma et de statistiques uniquement d'une base de données utilisateur dans SQL Server 2014 SP2

DBCC CLONEDATABASE est une nouvelle commande DBCC introduite dans SQL Server 2014 SP 2 qui est utilisée pour créer le clone d'une base de données utilisateur spécifiée, ce qui aide à résoudre les problèmes de performances liés à l'optimiseur de requête.

Lorsqu'un clone de la base de données est créé à l'aide de DBCC CLONEDATABASE, il créera une copie de schéma et de statistiques uniquement de la base de données spécifiée et ne contiendra aucune copie des données.

Créer le clone est aussi simple que de transmettre la source nom de la base de données et cloner le nom de la base de données à la commande DBCC.
DBCC CLONEDATABASE ('SansSQL', 'SansSQL_Clone') 

Sortie de la commande DBCC

Une fois le clonage terminé, la base de données clonée sera en mode lecture seule.

SELECT name, database_id, is_read_only FROM sys.databases WHERE name in ('SansSQL ', 'SansSQL_Clone') 

Que se passe-t-il réellement lorsque nous lançons la commande DBCC CLONEDATABASE sur une base de données ?
Elle commencera par quelques validations avant la création du clone, Les validations suivantes sont effectuées par DBCC CLONEDATABASE. La commande échoue si l'une des validations échoue.
  • La base de données source doit être une base de données utilisateur. Le clonage des bases de données système (maître, modèle, msdb, tempdb, base de données de distribution, etc.) n'est pas autorisé.
  • La base de données source doit être en ligne ou lisible.
  • Une base de données qui utilise le même nom que la base de données clonée ne doit pas déjà exister.
  • La commande n'est pas dans une transaction utilisateur.
Si toutes les validations réussissent, DBCC CLONEDATABASE effectuera les opérations suivantes :
  • Création d'un fichier de données principal et d'un fichier journal
  • Ajout d'espaces de données secondaires
  • Ajout de fichiers secondaires
Les fichiers de la base de données de destination hériteront des paramètres de taille et de croissance de la base de données modèle et les noms de fichier de la base de données de destination suivront la convention source_file_name _underscore_random_number.
SELECT database_id, file_id, type_desc, name, physical_name FROM sys.master_files WHERE DB_NAME(database_id) in ('SansSQL', 'SansSQL_Clone') 


Ensuite, DBCC CLONEDATABASE effectuera un instantané de la base de données interne en suivant les étapes suivantes
  • Valider la base de données source
  • Obtenir le verrou S pour la base de données source
  • Créer un instantané de la base de données source
  • Créer une base de données clone (il s'agit d'une base de données vide qui hérite du modèle)
  • Obtenir le verrou X pour la base de données clonée
  • Copier les métadonnées dans la base de données clonée
  • Libérez tous les verrous de la base de données
En utilisant la commande ci-dessous, nous pouvons vérifier si une base de données est un clone ou une base de données normale. pré>

Référence :https://support.microsoft.com/en-in/kb/3177838