KB3177838-xxx xxxx xxx xxx xxx xxxx xxx xxxx xxxx xxx xxxx xxxx xxx xxxx xxxx xxx xxxx xxxx xxx xxxx xxxx

Résumé

Cette mise à jour inclut une nouvelle commande de gestion DBCC CLONEDATABASE (Transact-SQL) dans SQL Server 2017 sous Windows, Service Pack 4 pour SQL Server 2012,Microsoft SQL Server 2014 service pack 2 et SQL Server 2016 SP1. Cette commande crée une base de données qui contient le schéma de tous les objets et statistiques de la base de données source spécifiée. 

Remarque Dans les environnements SQL Server 2014, vous devez installer la mise à jour cumulative 3 pour SQL server 2014 SP2 pour pouvoir cloner les NO_STATISTICS objets FileStream, de Store et Common Language Runtime (CLR) en utilisant DBCC.

À propos des service packs pour SQL Server

 

Les Service Packs sont cumulatifs. Chaque nouvelle version contient tous les correctifs fournis dans les Service Packs précédents et tous les nouveaux correctifs. Nous vous recommandons d’appliquer le dernier Service Pack et la dernière mise à jour cumulative de ce Service Pack. Il n'est donc pas nécessaire d'installer la version antérieure d'un Service Pack avant d'installer la dernière version disponible. Utilisez le tableau 1 de l’article suivant pour trouver plus d’informations sur le dernier Service Pack et la dernière mise à jour cumulative.

Déterminer le niveau de version, d’édition et de mise à jour de SQL Server et ses composants

À propos de DBCC CLONEDATABASE

Les services de support technique Microsoft vous demandent de générer un clone d’une base de données en utilisant DBCC CLONEDATABASE afin d’examiner un problème de performance lié à l’optimiseur de requête.Remarque La base de données créée par DBCC CLONEDATABASE n’est pas prise en charge en tant que base de données de production et est principalement destinée à des fins de dépannage et de diagnostic. Nous vous recommandons de détacher la base de données clonée après la création de celle-ci. Le clonage de la base de données source est effectué par les opérations suivantes :

  • Crée une base de données de destination qui utilise la même disposition de fichiers que la source, mais avec des tailles de fichier par défaut pour la base de données de modèle.

  • Crée une capture instantanée interne de la base de données source.

  • Copie les métadonnées système de la source dans la base de données de destination.

  • Copie tous les schémas de tous les objets de la source vers la base de données de destination.

  • Copie les statistiques de tous les index à partir de la source dans la base de données de destination.

Syntaxe

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

Arguments

  • source_database_nameCet argument est le nom de la base de données dont le schéma et les statistiques doivent être copiés.

  • target_database_nameCet argument est le nom de la base de données dans laquelle vous souhaitez copier le schéma et les statistiques de la base de données source. Cette base de données sera créée par DBCC CLONEDATABASE et ne devrait pas déjà exister.

  • NO_STATISTICSCet argument spécifie si les statistiques de table/index doivent être exclues du clone. Si cette option n’est pas spécifiée, des statistiques de tables/index sont automatiquement incluses. Cette option est disponible à partir de SQL Server 2014 SP2 CU3 et de SQL Server 2016 Service Pack 1.

  • NO_QUERYSTORECet argument spécifie si le magasin de requêtes doit être exclu du clone. Si cette option n’est pas spécifiée, les données du magasin de requêtes sont copiées dans le clone s’il est activé dans la base de données source. Cette option est disponible à partir de SQL Server 2016 Service Pack 1.

Quand utiliser DBCC CLONEDATABASE ?

DBCC CLONEDATABASE doit être utilisé pour créer un schéma et des statistiques uniquement copie d’une base de données de production afin d’examiner les problèmes de performances des requêtes. Gardez à l’esprit les restrictions et objets pris en charge suivants :

  • LimiterLes validations suivantes sont effectuées par DBCC CLONEDATABASE. La commande échoue en cas d’échec de la validation.

    • La base de données source doit être une base de données utilisateur. Le clonage de 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 une transaction utilisateur.

    Si toutes les validations réussissent, DBCC CLONEDATABASE exécute les opérations suivantes :

    • Création d’un fichier de données principal et d’un fichier journal

    • Ajouter des dataspaces secondaires

    • Ajouter des fichiers secondaires

    Remarque Tous les fichiers dans la base de données cible héritent des paramètres de taille et de croissance de la base de données du modèle. Convention de nom de fichier : les noms de fichiers de la base de données de destination suivent la Convention du numéro de source_file_name _underscore_random . Si le nom de fichier généré existe déjà dans le dossier de destination, DBCC CLONEDATABASE va échouer.

  • Le contrôle de l’instantané de la base de donnéesCLONEDATABASE utilise une capture de base de données interne de la base de données source de la base de données transactionnelle requise pour effectuer la copie. Cela permet d’éviter les problèmes de blocage et de concurrence lors de l’exécution de ces commandes. Si vous ne pouvez pas créer de capture instantanée, DBCC CLONEDATABASE échoue. Le niveau de base de données est maintenu pendant les étapes suivantes du processus de copie :

    • Valider la base de données source

    • Télécharger le verrou 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 (base de données vide héritant d’un 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érer tous les verrous de BDD

    Dès la fin de l’exécution de la commande, la capture d’écran interne est interrompue. Les options de confiance et de DB_CHAINING sont désactivées sur une base de données clonée.

Objets pris en charge

Seul le schéma d’objets suivant sera cloné dans la base de données de destination. Les objets chiffrés sont clonés mais ne sont pas pris en charge dans les clones dans cette version de SQL Server. Les objets qui ne sont pas répertoriés dans la section suivante ne sont pas pris en charge dans le clonage :

  • RÔLE D’APPLICATION

  • GROUPE DISPONIBILITÉ

  • INDEX COLUMNSTORE

  • CDB

  • CDC

  • Suivi des modifications (SQL Server 2016 SP2 CU10, SQL Server 2017 CU17, SQL Server 2019 CU1 et versions ultérieures)

  • CLR (en démarrant SQL Server 2014 SP2 CU3, SQL Server 2016 Service Pack 1 et versions ultérieures)

  • PROPRIÉTÉS DE LA BASE DE DONNÉES

  • DÉFINIE

  • FICHIERS ET GROUPES DE FICHIERS

  • Texte complet (en démarrant SQL Server 2016 SP1 CU2)

  • FONCTIONNALITÉ

  • INDEX

  • CONNEXION

  • FONCTION PARTITION

  • SCHÉMA DE PARTITION

  • INTÉRIEUR Remarques Les procédures T-SQL sont prises en charge dans toutes les versions démarrant SQL Server 2014 SP2. Les procédures CLR sont prises en charge pour démarrer SQL Server 2014 SP2 CU3. Les procédures compilées en mode natif sont prises en charge à partir de SQL Server 2016 SP1.

  • MAGASIN de requêtes (uniquement dans SQL Server 2016 Service Pack 1 et versions ultérieures) Remarques Le magasin de requêtes est copié uniquement s’il est activé sur la base de données source. Pour copier les dernières statistiques d’exécution dans le cadre du magasin de requêtes, exécutez sp_query_store_flush_db pour vider les statistiques d’exécution du magasin de requêtes avant d’exécuter DBCC CLONEDATABASE.

  • ROLE

  • ELLE

  • SCHEM

  • SOUCHE

  • INDEX SPATIAL

  • PORTENT

  • SYNONYME

  • TABULAIRE

  • TABLES OPTIMISÉes mémoire (uniquement dans SQL Server 2016 SP1 et versions ultérieures).

  • OBJETS FILESTREAM et de création de code (SQL Server 2014 SP2 CU3, SQL Server 2016 SP1 et versions ultérieures).

  • DÉCLENCH

  • NOUVEAU

  • BD MISE À NIVEAU

  • Il

  • GANT

  • INDEX XML

  • COLLECTION DE SCHÉMAS XML

 

Attribué

Vous devez être membre du rôle serveur fixe sysadmin .

Limitations et considérations

DBCC CLONEDATABASE ne prend pas en charge la création d’un clone s’il existe des objets utilisateur (tables, index, schémas, rôles, etc.) qui ont été créés dans la base de données du modèle. Si des objets utilisateur sont présents dans la base de données du modèle, le clone de la base de données échoue avec le message d’erreur suivant :

MSG 2601, niveau 14, état 1, ligne 1ne peut pas insérer une ligne de clé en double dans l’objet <>table système avec un index unique « nom de l’index ». La valeur de clé dupliquée est <valeur de clé>   

Pour plus d’informations sur la sécurité des données sur les bases de données clonées, voir le blog suivant : présentation de lasécurité des données dans les bases de données clonées.

Si vous avez des index dans la Banque d’informations, consultez le blog suivant :considérations relatives à l’ajustement des requêtes avec des index ColumnStore sur les bases de données clonéesafin de mettre à jour les statistiques d’index ColumnStore avant d’exécuter la commande DBCC CLONEDATABASE .

Messages du journal des erreurs

Les messages suivants sont enregistrés dans le journal des erreurs pendant le processus de clonage :

<horodatage> le clonage de la base de données spid53 pour’sourcedb’a commencé avec target en tant que « sourcedb_clone ». <horodatage> spid53 en démarrant la base de données « Sourcedb_clone ». <horodatage> spid53 option de base de données de confiance pour la désactivation de la base de données’sourcedb_clone' . <horodatage> spid53 de base de données DB_CHAINING 'sourcedb_clone’est une base de données clonée. Une base de données clonée doit être utilisée uniquement à des fins de diagnostic et n’est pas prise en charge dans un environnement de production. <horodatage> le clonage de la base de données spid53 pour’sourcedb’est terminé. La base de données clonée est « sourcedb_clone ».

Propriété de base de données

Une nouvelle propriété de base de données IsClone est ajoutée. DATABASEPROPERTYEX ('dbname', 'IsClone') renverra 1 si la base de données est générée à l’aide de DBCC CLONEDATABASE.

Exemples

  1. Création d’un clone de la base de données AdventureWorks incluant des schémas, des statistiques et des magasins de requêtes (SQL Server 2016 SP1 et versions ultérieures)

    Transact-SQL -- Generate the clone of AdventureWorks database.    DBCC CLONEDATABASE (AdventureWorks, AdventureWorks_Clone);    GO 
  2. Création d’un clone de base de données du schéma de la base de données AdventureWorks dans SQL Server 2014 sans statistiques (SQL Server 2014 SP2 CU3 et versions ultérieures)

    DBCC CLONEDATABASE (AdventureWorks, AdventureWorks_Clone) WITH NO_STATISTICS
  3. Création d’un clonage de schéma uniquement de la base de données AdventureWorks sans statistiques et magasin de requêtes (SQL Server 2016 SP1 et versions ultérieures)

    DBCC CLONEDATABASE (AdventureWorks, AdventureWorks_Clone) WITH NO_STATISTICS,NO_QUERYSTORE

Références

Apprenez-en davantage sur la terminologie utilisée par Microsoft pour décrire les mises à jour logicielles.

Besoin d’aide ?

Développez vos compétences
Découvrez des formations
Accédez aux nouvelles fonctionnalités en avant-première
Rejoindre Microsoft Insider

Ces informations vous ont-elles été utiles ?

Nous vous remercions pour vos commentaires.

Merci pour vos commentaires. Il serait vraisemblablement utile pour vous de contacter l’un de nos agents du support Office.

×