Partager via


Compréhension de la génération incrémentielle

Après la génération initiale du schéma, vous pouvez modifier les définitions de cube et de dimension à l’aide de SQL Server Data Tools (SSDT), puis réexécuter l’Assistant Génération de schéma. L’Assistant met à jour le schéma dans la base de données de la zone objet et dans la vue de source de données associée pour refléter les modifications et conserver les données qui existent actuellement dans les tables à régénérer, dans la mesure du possible. Si vous avez modifié les tables après la génération initiale, l’Assistant Génération de schéma conserve ces modifications lorsque cela est possible à l’aide des règles suivantes :

  • Si une table a été générée précédemment par l’Assistant, la table est remplacée. Vous pouvez empêcher un tableau généré par l’Assistant d’être remplacé en modifiant la propriété AllowChangesDuringGeneration de la table dans la vue source de données false. Lorsque vous contrôlez une table, la table est traitée comme toute autre table définie par l’utilisateur et n’est pas affectée pendant la régénération. Après avoir supprimé une table de génération, vous pouvez modifier ultérieurement la AllowChangesDuringGeneration propriété de la table dans la vue de source de données pour rouvrir la table true pour modification par l'Assistant. Pour plus d’informations, consultez Modifier les propriétés dans une vue de source de données (Analysis Services).

  • Si une table a été ajoutée à la vue de source de données ou à la base de données sous-jacente par un autre élément que l’Assistant, la table n’est pas remplacée.

Lorsque l’Assistant Génération de schéma régénère les tables précédemment générées dans la base de données de zone d’objet, vous pouvez choisir de conserver les données existantes dans ces tables.

Prise en charge de la conservation des données

En règle générale, l’Assistant Génération de schéma conserve les données stockées dans les tables qu’elle a générées. En outre, si vous ajoutez des colonnes à des tables générées par l’Assistant, l’Assistant conserve également ces données. Vous pouvez utiliser cette fonctionnalité pour ajouter ou modifier vos dimensions et cubes, puis régénérer les objets sous-jacents sans avoir à recharger les données stockées dans les tables sous-jacentes.

Remarque

Si vous chargez des données à partir de fichiers texte délimités, vous pouvez également choisir si l’Assistant Génération de schéma remplace ces fichiers et les données contenues dans ces fichiers pendant la régénération. Les fichiers texte sont entièrement remplacés ou pas du tout modifiés. L’Assistant Génération de schéma ne remplace pas partiellement ces fichiers. Par défaut, ces fichiers ne sont pas remplacés.

Conservation partielle

L’Assistant Génération de schéma ne peut pas conserver les données existantes dans certaines circonstances. Le tableau suivant fournit des exemples de situations dans lesquelles l’Assistant ne peut pas conserver toutes les données existantes dans les tables sous-jacentes pendant la régénération.

Type de modification des données Traitement
Modification de type de données incompatible L’Assistant Génération de schéma utilise des conversions de types de données SQL Server standard, dans la mesure du possible, pour convertir des données existantes d’un type de données vers un autre. Toutefois, lorsque vous modifiez le type de données d’un attribut en type incompatible avec les données existantes, l’Assistant supprime les données de la colonne affectée.
Erreurs d’intégrité référentielle Si vous modifiez une dimension ou un cube qui contient des données et que la modification provoque une erreur d’intégrité référentielle lors de la régénération, l’Assistant Génération de schéma supprime toutes les données de la table de clés étrangères. Les données supprimées ne sont pas limitées à la colonne qui a provoqué la violation de contrainte de clé étrangère ou aux lignes qui contiennent les erreurs d’intégrité référentielle. Par exemple, si vous modifiez la clé de dimension en attribut qui a des données non uniques ou null, toutes les données existantes de la table de clés étrangères sont supprimées. En outre, la suppression de toutes les données d’une table peut avoir un effet en cascade et peut entraîner d’autres violations d’intégrité référentielle.
Attribut ou dimension supprimé Si vous supprimez un attribut d’une dimension, l’Assistant Génération de schéma supprime la colonne mappée à l’attribut supprimé. Si vous supprimez une dimension, l’Assistant supprime la table associée à la dimension supprimée. Dans ces cas, l’Assistant supprime les données contenues dans la colonne ou la table supprimées.

L’Assistant Génération de schéma émet un avertissement avant qu’il supprime toutes les données afin que vous puissiez annuler l’Assistant sans perdre de données. Toutefois, l’Assistant Génération de schéma n’est pas en mesure de différencier la perte de données prévue et la perte de données inattendue. Lorsque vous exécutez l’Assistant, une boîte de dialogue répertorie les tables et colonnes qui contiennent des données qui seront supprimées. Vous pouvez soit poursuivre et supprimer les données, soit annuler l’Assistant et réviser les modifications apportées aux tables et colonnes.

Prise en charge des modifications de Cube et de Dimension

Lorsque vous modifiez les propriétés des dimensions et des cubes, l’Assistant Génération de schéma régénère les objets appropriés dans la base de données de la zone d’objet sous-jacente, ainsi que dans la vue de source de données associée, comme décrit dans le tableau suivant.

Suppression d’un objet, tel qu’une dimension, un cube ou un attribut.
L’Assistant Génération de schéma supprime les objets sous-jacents auxquels l’objet supprimé est mappé. Si vous ajoutez des colonnes à une table générée par l’Assistant, les nouvelles colonnes n’empêchent pas la suppression de cette table. La suppression d’un objet entraîne la suppression des données stockées dans les objets sous-jacents et peut également entraîner la suppression d’autres données si des erreurs d’intégrité référentielle se produisent.

Renommage d’un objet, tel qu’une dimension, un cube ou un attribut.
L’Assistant Génération de schéma renomme les objets sous-jacents auxquels l’objet renommé est mappé. L’Assistant renomme également tous les objets affectés, tels que les clés primaires. Les données existantes stockées dans les objets sous-jacents sont conservées.

Modification d’un objet, par exemple la modification de son type de données.
L’Assistant Génération de schéma modifie les objets sous-jacents auxquels l’objet modifié est mappé. Les données existantes stockées dans les objets sous-jacents des bases de données sont conservées, sauf si le nouveau type de données n’est pas compatible avec les données existantes.

Ajout d’un nouvel objet, tel qu’une dimension, un cube ou un attribut.
L’Assistant Génération de schéma ajoute des objets sous-jacents auxquels le nouvel objet est mappé.

Si l’Assistant Génération de schéma ne peut pas apporter la modification requise en raison de la présence d’un objet utilisateur dans la base de données de la zone objet (car le moteur de base de données retourne une erreur), l’Assistant Génération de schéma échoue et affiche l’erreur retournée par le moteur de base de données. Par exemple, si vous créez une contrainte de clé primaire ou un index non clusterisé sur une table après que l’Assistant de génération de schéma a généré la table, l’Assistant de génération de schéma ne supprime pas cette table, car il n’a pas créé la contrainte ou l’index.

Prise en charge des modifications de schéma

Lorsque vous modifiez les propriétés des tables ou des colonnes dans la base de données de la zone d’objet ou dans la vue de source de données associée, l’Assistant Génération de schéma traite les modifications comme décrit dans le tableau suivant.

Suppression d’une table ou d’une colonne générée par l’Assistant Génération de schéma.
Si vous supprimez une table ou une colonne générée par l’Assistant Génération de schéma, l’Assistant régénère la table supprimée. L’Assistant ne fournit aucun avertissement indiquant que la table ou la colonne supprimée sera régénérée.

Modification des propriétés d’une table ou d’une colonne générée par l’Assistant Génération de schéma.
Si vous modifiez les propriétés d’une table ou d’une colonne générée par l’Assistant Génération de schéma, l’Assistant régénère la table modifiée sans modification. Par exemple, si vous modifiez le type de données ou le fait qu'une colonne puisse être nulle, ou le groupe de fichiers d'une table générée par l’Assistant de génération de schéma, la modification ne sera pas conservée lors de la régénération. L’Assistant ne fournit aucun avertissement indiquant que l’objet modifié sera régénéré sans la modification.

Ajout d’une colonne à une table générée par l’Assistant Génération de schéma ou ajout d’une table à la base de données de zone d’objet ou à la base de données de zone intermédiaire.
Si vous ajoutez une colonne à une table générée par l’Assistant Génération de schéma, l’Assistant conserve la colonne supplémentaire, ainsi que les données stockées dans celle-ci, pendant la régénération. Toutefois, si vous ajoutez une table à la base de données de la zone d’objet ou à la base de données de zone intermédiaire, l’Assistant Génération de schéma n’incorpore pas la nouvelle table. La colonne ajoutée ou la table ajoutée n’est pas reflétée dans le projet Analysis Services, la base de données Analysis Services, les packages DTS, la vue de source de données ou tout autre emplacement dans le schéma généré.

Prise en charge des modifications apportées à la source de données et à la vue de source de données

Lorsque l’Assistant Génération de schéma est réexécuté, il réutilise la même source de données et la même vue de source de données que celle utilisée pour la génération d’origine. Si vous ajoutez une source de données ou une vue de celle-ci, l’Assistant ne les utilisera pas. Si vous supprimez la source de données originale ou la vue de source de données après la génération initiale, vous devez exécuter l’Assistant depuis le début. Tous les paramètres précédents de l’Assistant sont également supprimés. Tous les objets existants d’une base de données sous-jacente liée à une source de données supprimée ou à une vue de source de données sont traités comme des objets créés par l’utilisateur la prochaine fois que vous exécutez l’Assistant Génération de schéma.

Si la vue de source de données ne reflète pas l’état réel de la base de données sous-jacente au moment de la génération, l’Assistant Génération de schéma peut rencontrer des erreurs lorsqu’il génère les schémas de la base de données de zone d’objet et de la base de données de zone intermédiaire. Par exemple, si la vue de source de données spécifie que le type de données d’une colonne est défini intsur , mais que le type de données de la colonne est réellement défini stringsur , l’Assistant Génération de schéma définit le type de données de la clé étrangère pour qu’elle corresponde à int la vue de source de données, puis échoue lorsqu’elle crée la relation, car le type de données réel est string.

En revanche, si vous modifiez la chaîne de connexion de source de données en une base de données différente de la génération précédente, aucune erreur n’est générée. La nouvelle base de données est utilisée et aucune modification n’est apportée à la base de données précédente.

Voir aussi

Gérer les modifications apportées aux vues de source de données et aux sources de données
Assistant de génération de schéma (Analysis Services)