51 votes

Impossible de modifier la conception des tables dans SQL Server 2008

J'ai créé une table tbl_Candidate mais j'ai oublié de définir la clé primaire de la table et je l'ai enregistrée sans clé primaire.

La prochaine fois que je vais définir la clé primaire dans SQL Server 2008 Express, j'obtiens un message comme quoi je dois abandonner la table et la recréer lorsque je vais enregistrer la table avec les changements de clé primaire.

Voici le message qui s'affiche lorsque j'essaie d'enregistrer les modifications apportées au tableau :

La sauvegarde des modifications n'est pas autorisée. Les modifications que vous avez apportées nécessitent que les tables suivantes soient abandonnées et recréées. Vous avez soit fait des modifications à la table qui ne peut pas être recréée ou activer l'option empêcher l'enregistrement des modifications qui nécessitent la recréation des tables.

Je suis connecté à SQL Server avec l'authentification Windows, le type de serveur est le moteur de base de données et le nom du serveur est le suivant .\SQLExpress .

Veuillez me donner un moyen de corriger ce problème ou de modifier les paramètres du serveur SQL.

104voto

pylover Points 2553

La réponse se trouve sur le Site MSDN :

La boîte de dialogue Enregistrer (non autorisé) vous avertit que l'enregistrement des modifications n'est pas autorisé parce que les modifications que vous avez apportées requièrent l'utilisation de l'un des éléments suivants que l'enregistrement des modifications n'est pas autorisé parce que les les tables énumérées doivent être abandonnées et recréées.

Les actions suivantes peuvent nécessiter la recréation d'une table :

  • Ajout d'une nouvelle colonne au milieu du tableau
  • Déposer une colonne
  • Modification de la nullité des colonnes
  • Changer l'ordre des colonnes
  • Modification du type de données d'une colonne

EDIT 1 :

Informations complémentaires utiles provenant de ici :

Pour modifier l'option Empêcher l'enregistrement des modifications qui requièrent la recréation, procédez comme suit :

  1. Ouvrez SQL Server Management Studio (SSMS).
  2. Dans le menu Outils, cliquez sur Options.
  3. Dans le volet de navigation de la fenêtre Options, cliquez sur Designers.
  4. Cochez ou décochez la case Empêcher l'enregistrement des modifications qui nécessitent la recréation de la table, puis cliquez sur OK.

Note Si vous désactivez cette option, vous n'êtes pas averti, lorsque vous enregistrez la table, que les modifications que vous avez apportées ont changé la structure des métadonnées de la table. de la table. Dans ce cas, une perte de données peut se produire lorsque vous sauvegarder le tableau.

Risque de désactiver l'option "Empêcher l'enregistrement des modifications qui nécessitent la recréation d'une table".

Bien que la désactivation de cette option puisse vous éviter de recréer une table, elle peut également entraîner la perte des modifications. mais elle peut également entraîner la perte de certaines modifications. Par exemple, supposons que vous activez la fonction de suivi des modifications dans SQL Server 2008 pour pour suivre les modifications apportées à la table. Lorsque vous effectuez une opération qui entraîne recréer la table, vous recevez le message d'erreur mentionné dans la section mentionné dans la section "Symptômes". Cependant, si vous désactivez cette option, les informations de suivi des modifications existantes sont supprimées lorsque la table table est recréée. Par conséquent, nous vous recommandons de ne pas de contourner ce problème en désactivant cette option.

Settings, screen shot

6voto

Vous pouvez directement ajouter une contrainte pour la table

ALTER TABLE TableName
ADD CONSTRAINT ConstraintName PRIMARY KEY(ColumnName)
GO 

Assurez-vous que votre colonne de clé primaire ne doit pas avoir de valeurs nulles.

Option 2 :

vous pouvez modifier vos options SQL Management Studio comme

Pour modifier cette option, dans le menu Outils, cliquez sur Options, développez l'option Designers, puis cliquez sur Table and Database Designers. Sélectionnez ou désactivez la case à cocher Empêcher l'enregistrement des modifications qui nécessitent de recréer la table.

4voto

Empêcher la sauvegarde des modifications qui nécessitent la recréation d'une table

Cinq clics rapides

Prevent saving changes that require table re-creation in five clicks

  1. Outils
  2. Options
  3. Designers
  4. Empêcher la sauvegarde des modifications qui nécessitent la recréation d'une table
  5. OK .

Après la sauvegarde, répétez la procédure pour recocher la case. Cela permet de se prémunir contre toute perte accidentelle de données.

Explication complémentaire

  • Par défaut, SQL Server Management Studio empêche l'abandon des tables, car lorsqu'une table est abandonnée, le contenu de ses données est perdu*.

  • Lorsque l'on modifie le type de données d'une colonne dans la vue Conception de la table, lors de l'enregistrement des modifications, la base de données supprime la table en interne, puis en recrée une nouvelle.

*Votre situation particulière ne posera pas de conséquence puisque votre table est vide. Je fournis cette explication uniquement pour améliorer votre compréhension de la procédure.

1voto

Sanket Gadade Points 63

Il suffit d'aller dans le SQL Server Management Studio -> Tools -> Options -> Designer ; et de décocher l'option "prevent saving changes that require table re-creation".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X