Partager via


Message d’erreur « L’enregistrement des modifications n’est pas autorisé » dans SSMS

Cet article vous aide à contourner le problème selon lequel un message d’erreur s’affiche quand vous essayez d’enregistrer une table dans SQL Server Management Studio (SSMS).

Version du produit d’origine : SQL Server
Numéro de base de connaissances d’origine : 956176

Symptômes

Quand vous essayez d’enregistrer une table après l’avoir modifiée à l’aide du Concepteur dans SQL Server management Studio, le message d’erreur suivant peut s’afficher :

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 l’élément filegroup d’une table ou ses données text/image.

Cause

Ce problème se produit, car l’option Empêcher l’enregistrement de modifications qui nécessitent une recréation de la table est activée par défaut dans SQL Server Management Studio.

Quand vous modifiez une table afin de modifier la structure des métadonnées, puis que vous enregistrez la table, celle-ci doit être recréée en fonction des modifications apportées. Cela peut entraîner la perte de métadonnées et une perte directe de données lors de la recréation de la table. Si vous activez l’option Empêcher l’enregistrement de modifications qui nécessitent une recréation de la table dans la section Concepteur de la fenêtre Options de SQL Server Management Studio (SSMS), le message d’erreur mentionné dans la section « Symptômes » s’affiche.

Solution de contournement

Pour contourner ce problème, utilisez les instructions Transact-SQL ALTER TABLE pour modifier la structure des métadonnées d’une table.

Par exemple, pour modifier la colonne MyDate de type datetime dans la table nommée MyTable afin d’accepter les valeurs NULL, vous pouvez utiliser :

alter table MyTable alter column MyDate7 datetime NULL

Important

Il est vivement recommandé de ne pas contourner ce problème en désactivant l’option Empêcher l’enregistrement de modifications qui nécessitent une recréation de la table. Pour plus d’informations sur les risques liés à la désactivation de cette option, consultez la section « Informations supplémentaires ».

Plus d’informations

Pour modifier l’option Empêcher l’enregistrement de modifications qui nécessitent une recréation de la table, procédez comme suit :

  1. Ouvrez SQL Server Management Studio.

  2. Dans le menu Outils, cliquez sur Options.

  3. Dans le volet de navigation de la fenêtre Options, cliquez sur Concepteurs.

  4. Activez ou désactivez la case à cocher Empêcher l’enregistrement de modifications qui nécessitent une recréation de la table, puis cliquez sur OK.

Note

Si vous désactivez cette option, quand vous enregistrez la table, vous n’êtes pas averti que les modifications apportées ont modifié la structure des métadonnées de la table. Dans ce cas, l’enregistrement de la table peut entraîner une perte de données.

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 de recréer une table, elle peut également entraîner une perte de modifications. Par exemple, supposons que vous activez la fonctionnalité de suivi des modifications dans SQL Server pour effectuer le suivi des modifications apportées à la table. Quand vous effectuez une opération qui entraîne la recréation de la table, le message d’erreur mentionné dans la section Symptômes s’affiche. 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, il est recommandé de ne pas contourner ce problème en désactivant l’option.

Pour déterminer si la fonctionnalité de suivi des modifications est activée pour une table, procédez comme suit :

  1. Dans SQL Server Management Studio, localisez la table dans l’Explorateur d’objets.
  2. Cliquez avec le bouton droit sur la table, puis cliquez sur Propriétés.
  3. Dans la boîte de dialogue Propriétés de la table, cliquez sur Suivi des modifications. Si la valeur de l’élément Suivi des modifications est True (Vrai), cette option est activée pour la table. Si la valeur est False (Faux), cette option est désactivée.

Quand la fonctionnalité Change Tracking est activée, utilisez des instructions Transact-SQL pour modifier la structure des métadonnées de la table.

Les étapes pour reproduire le problème.

  1. Dans SQL Server Management Studio, créez une table qui contient une clé primaire dans l’outil Concepteur de tables.
  2. Cliquez avec le bouton droit sur la base de données qui contient cette table, puis cliquez sur Propriétés.
  3. Dans la boîte de dialogue Propriétés de la base de données, cliquez sur Suivi des modifications.
  4. Définissez la valeur de l’élément Suivi des modifications sur True (Vrai), puis cliquez sur OK.
  5. Cliquez avec le bouton droit sur la table, puis cliquez sur Propriétés.
  6. Dans la boîte de dialogue Propriétés de la table, cliquez sur Suivi des modifications.
  7. Définissez la valeur de l’élément Suivi des modifications sur True (Vrai), puis cliquez sur OK.
  8. Dans le menu Outils, cliquez sur Options.
  9. Dans la boîte de dialogue Options, cliquez sur Concepteurs.
  10. Cliquez pour activer la case à cocher Empêcher l’enregistrement de modifications qui nécessitent une recréation de la table, puis cliquez sur OK.
  11. Dans l’outil Concepteur de tables, modifiez le paramètre Autoriser les valeurs NULL sur une colonne existante.
  12. Essayez d’enregistrer les modifications apportées à la table.