Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Version du produit d’origine : SQL Server
Numéro de base de connaissances d’origine : 956176
Summary
Cet article vous aide à contourner le message d’erreur « L’enregistrement des modifications n’est pas autorisé » que SQL Server Management Studio (SSMS) affiche lorsque vous enregistrez les modifications dans le Concepteur de tables. L’erreur se produit lorsqu’une modification nécessite que SSMS supprime et recrée la table, et que l’option Empêcher l’enregistrement des modifications nécessitant une nouvelle création de table est activée. Pour éviter cette erreur et la recréation de table qui l’entraîne, utilisez ALTER TABLE des instructions Transact-SQL (T-SQL) au lieu du Concepteur de tables. Cet article explique également comment modifier l’option et pourquoi la désactiver peut être risquée, en particulier pour les tableaux qui utilisent Change Tracking.
Symptômes : Erreur lors de l’enregistrement des modifications de table dans le Concepteur de tables
Lorsque vous essayez d’enregistrer une table après avoir apporté des modifications à la table à l’aide de Table Designer dans SQL Server Management Studio, vous pouvez recevoir le message d’erreur suivant :
L’enregistrement des modifications n’est pas autorisé. Les modifications effectuées nécessitent que les tables suivantes soient supprimées, puis recréées. Vous avez apporté des modifications à une table qui ne peut pas être recréée, ou vous avez activé l’option Empêcher l’enregistrement de modifications qui nécessitent une recréation de la table.
Ce problème se produit quand vous apportez une ou plusieurs des modifications suivantes à la table :
- Vous modifiez le paramètre Autoriser les valeurs Null pour une colonne.
- Vous réorganisez les colonnes de la table.
- Vous modifiez le type de données d’une colonne.
- Vous ajoutez une nouvelle colonne.
- Vous modifiez le
filegroupd’une table ou ses donnéestext/image.
Cause : SSMS empêche les modifications qui nécessitent une recréation de la table
Ce problème se produit, car l’option Empêcher l’enregistrement des modifications nécessitant une nouvelle création de table est activée par défaut dans SSMS.
Lorsque vous modifiez une table d’une manière qui modifie sa structure de métadonnées, puis enregistrez la table, SSMS doit recréer la table en fonction de ces modifications. La recréation d’une table peut entraîner la perte de métadonnées et une perte directe de données.
Si l’option Empêcher l’enregistrement des modifications nécessitant une nouvelle création de table est activée dans la section Concepteurs de la fenêtre Options SSMS, SSMS bloque l’enregistrement et vous recevez le message d’erreur mentionné dans la section Symptômes . Pour plus d’informations sur cette option, consultez Options (Concepteurs - Page Concepteurs de tables et concepteurs de base de données).
Solution de contournement : utiliser ALTER TABLE au lieu du Concepteur de tables
Pour contourner ce problème, utilisez des instructions ALTER TABLE T-SQL pour apporter les modifications à la structure de métadonnées d’une table. Pour exécuter les instructions, procédez comme suit :
- Dans SQL Server Management Studio, connectez-vous à l’instance, puis sélectionnez la base de données qui contient la table.
- Dans la barre d’outils, sélectionnez Nouvelle requête.
- Entrez l’instruction T-SQL dans la fenêtre de requête, puis sélectionnez Exécuter.
L’autorisation ALTER est nécessaire sur la table pour exécuter des instructions ALTER TABLE.
Par exemple, pour modifier la colonne MyDate de type datetime dans une table appelée MyTable pour accepter des valeurs NULL, utilisez l’instruction suivante :
ALTER TABLE MyTable ALTER COLUMN MyDate datetime NULL;
Pour ajouter une nouvelle colonne nommée MyNewColumn de type int qui accepte des valeurs NULL dans la même table, utilisez l’instruction suivante :
ALTER TABLE MyTable ADD MyNewColumn int NULL;
Important
Nous vous recommandons vivement de ne pas contourner ce problème en désactivant l’option Empêcher l’enregistrement des modifications nécessitant une nouvelle création de table . Pour plus d’informations sur les risques liés à la désactivation de cette option, consultez Risques liés à la désactivation de l’option « Empêcher l’enregistrement des modifications nécessitant une recréation de table ».
Comment modifier l’option « Empêcher l’enregistrement des modifications nécessitant une nouvelle création de table »
Pour sélectionner ou effacer l’option Empêcher l’enregistrement des modifications nécessitant une nouvelle création de table , procédez comme suit :
- Ouvrez SQL Server Management Studio.
- Dans le menu Outils , sélectionnez Options.
- Dans le volet de navigation de la fenêtre Options, sélectionnez Designers.
- Activez ou désactivez la case Empêcher l’enregistrement des modifications nécessitant une nouvelle création de table , puis sélectionnez OK.
Note
Si vous désactivez cette option, vous n’êtes pas averti, lors de l’enregistrement de la table, que les modifications apportées ont changé la structure des métadonnées de la table. Dans ce cas, la perte de données peut se produire lorsque vous enregistrez la table.
Risques liés à la désactivation de l’option « Empêcher l’enregistrement de modifications qui nécessitent une recréation de la table »
Bien que la désactivation de cette option puisse vous aider à éviter l’erreur, elle peut également entraîner la perte des modifications. Lorsque l’option Empêcher l’enregistrement des modifications nécessitant une nouvelle création de table est activée, SSMS affiche une erreur pour chaque modification qui nécessite de recréer la table, car la recréation d’une table peut entraîner la perte de métadonnées ou de données en général. Change Tracking est un exemple des métadonnées qui peuvent être perdues.
Par exemple, supposons que vous activez la fonctionnalité Change Tracking dans SQL Server pour suivre les modifications apportées à la table. Lorsque vous effectuez une opération qui entraîne la recréation de la table, vous recevez le message d’erreur mentionné dans la section Symptômes . Toutefois, si vous désactivez cette option, les informations de suivi des modifications existantes sont supprimées lors de la recréation de la table. Par conséquent, nous vous recommandons de ne pas contourner ce problème en désactivant l’option.
Comment vérifier si le suivi des modifications est activé pour une table
Pour déterminer si la fonctionnalité de suivi des modifications est activée pour une table, procédez comme suit :
- Dans SQL Server Management Studio, localisez la table dans l’Explorateur d’objets.
- Cliquez avec le bouton droit sur la table, puis sélectionnez Propriétés.
- Dans la boîte de dialogue Propriétés du tableau , sélectionnez Suivi des modifications. Si la valeur de l’élément Change Tracking est True, Change Tracking est activée pour la table. Si la valeur est False, elle est désactivée.
Lorsque la fonctionnalité Change Tracking est activée, utilisez des instructions T-SQL pour modifier la structure des métadonnées de la table. Pour plus d’informations sur l’activation et la désactivation du suivi des modifications, consultez Activer et désactiver le suivi des modifications.
Étapes pour reproduire le problème
Pour reproduire l’erreur, procédez comme suit :
- Dans SQL Server Management Studio, créez une table qui contient une clé primaire dans l’outil Concepteur de tables.
- Cliquez avec le bouton droit sur la base de données qui contient cette table, puis sélectionnez Propriétés.
- Dans la boîte de dialogue Propriétés de la base de données , sélectionnez Suivi des modifications.
- Définissez la valeur de l’élément Change Tracking sur True, puis sélectionnez OK.
- Cliquez avec le bouton droit sur le tableau, puis sélectionnez Propriétés.
- Dans la boîte de dialogue Propriétés du tableau , sélectionnez Suivi des modifications.
- Définissez la valeur de l’élément Change Tracking sur True, puis sélectionnez OK.
- Dans le menu Outils , sélectionnez Options.
- Dans la boîte de dialogue Options, sélectionnez Designers.
- Activez la case à cocher Empêcher l’enregistrement des modifications nécessitant une nouvelle création de table , puis sélectionnez OK.
- Dans l’outil Concepteur de tables, modifiez le paramètre Autoriser les valeurs NULL sur une colonne existante.
- Essayez d’enregistrer la modification apportée à la table.