Conditions requises pour une journalisation minimale dans l'importation en bloc
Une opération d'importation en bloc ne peut être journalisée au minimum qu'en mode de récupération utilisant les journaux de transactions ou en mode de récupération simple. Pour une base de données en mode de restauration complète, toutes les opérations d'insertion de lignes effectuées par importation en bloc sont entièrement enregistrées dans le journal des transactions. Les importations de données de grande taille peuvent entraîner un remplissage rapide du journal des transactions si le mode de restauration complète est utilisé. Par contre, la journalisation minimale réduit la possibilité qu'une opération d'importation en bloc remplisse tout l'espace du journal. La journalisation minimale est également plus efficace qu'une journalisation complète. La journalisation minimale nécessite que la base de données emploie le mode de récupération utilisant les journaux de transactions (si la base de données utilise normalement la restauration complète) ou le mode de récupération simple.
Remarque : |
---|
Pour plus d'informations sur le passage du mode de restauration complète au mode de récupération utilisant les journaux de transactions, consultez Considérations sur le basculement à partir du mode de restauration complète ou du mode de récupération utilisant les journaux de transactions. |
Conditions requises concernant les tables pour la journalisation minimale
La journalisation minimale nécessite que la table cible remplisse les conditions suivantes :
- La table n'est pas en cours de réplication.
- Le verrouillage de table est spécifié (à l'aide de TABLOCK).
Pour plus d'informations, consultez Contrôle du mécanisme de verrouillage pour l'importation en bloc.
Remarque : |
---|
Bien que les insertions de données ne soient pas consignées dans le journal des transactions lors de l'exécution d'une opération d'importation en bloc à journalisation minimale, le moteur de base de données consigne tout de même les allocations d'extensions chaque fois qu'une nouvelle extension est allouée à la table. |
Index dans les tables
La possibilité de journalisation minimale pour une table dépend également du fait que celle-ci soit indexée et, si elle l'est, du fait qu'elle soit vide, c'est-à-dire :
- Si la table ne possède aucun index, les pages de données bénéficient de la journalisation minimale.
- Si la table ne possède pas d'index cluster, mais possède un ou plusieurs index non-cluster, les pages de données bénéficient toujours de la journalisation minimale. La manière dont les pages d'index sont journalisées dépend toutefois du remplissage de la table, c'est-à-dire :
- Si la table est vide, les pages d'index bénéficient de la journalisation minimale.
- Si la table n'est pas vide, les pages d'index bénéficient de la journalisation complète.
Remarque : Si vous démarrez avec une table vide et importez les données en bloc en plusieurs lots, pour le premier lot les pages de données et d'index bénéficient de la journalisation minimale, mais à partir du second lot, seules les pages de données bénéficient de cette journalisation minimale. - Si la table possède un index cluster et est vide, les pages de données et d'index bénéficient de la journalisation minimale.
Par contre, si une table possède un index cluster et n'est pas vide, les pages de données et d'index bénéficient de la journalisation complète, quel que soit le mode de récupération.Remarque : Si vous démarrez avec une table vide et importez les données en bloc en plusieurs lots, pour le premier lot les pages de données et d'index bénéficient de la journalisation minimale, mais à partir du second lot, seules les pages de données bénéficient de la journalisation en bloc.
Pour plus d'informations, notamment pour afficher un résumé des comportements de verrouillage et de journalisation de table lors de l'importation en bloc, consultez Optimisation de l'importation en bloc.
Meilleure pratique Lorsque vous utilisez la récupération utilisant les journaux de transactions pour importer un grand nombre de lignes d'une table, envisagez de répartir les importations en bloc entre plusieurs lots. Chaque lot équivaut à une transaction. Ainsi, lorsque le lot est terminé, son journal est disponible pour la sauvegarde. La sauvegarde de journal suivante récupérera l'espace du journal utilisé pour importer en bloc cet ensemble de lignes.
Voir aussi
Concepts
Choix du mode de récupération d'une base de données
Autres ressources
Utilitaire bcp
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
BACKUP (Transact-SQL)
ALTER DATABASE (Transact-SQL)
SuspendIndexing Property
UseBulkCopyOption Property