web-dev-qa-db-fra.com

Impossible de modifier la conception de la table dans SQL Server 2008

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

La prochaine fois que je définirai la clé primaire dans SQL Server 2008 Express, je recevrai un message comme si je devais supprimer la table et la recréer lorsque je vais enregistrer la table avec les modifications apportées à la clé primaire ...

C'est le message qui apparaît lorsque j'essaie de sauvegarder les modifications dans la table ... !!

L'enregistrement des modifications n'est pas autorisé. Les modifications que vous avez apportées nécessitent que les tables suivantes soient supprimées et recréées. Vous avez soit apporté des modifications impossibles à recréer à la table, soit activé l'option empêchant l'enregistrement des modifications nécessitant la recréation des tables.

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

S'il vous plaît, donnez-moi un moyen de corriger ce problème ou un moyen de modifier les paramètres de SQL Server ... donnez-moi s'il vous plaît des instructions .. merci ..

43
tharindlaksh

La réponse est sur le site MSDN :

La boîte de dialogue Enregistrer (non autorisée) vous avertit que l'enregistrement des modifications n'est pas autorisé, car les modifications que vous avez apportées nécessitent que les tables répertoriées soient supprimées et recréées.

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

  • Ajouter une nouvelle colonne au milieu de la table
  • Déposer une colonne
  • Modification de la nullabilité de la colonne
  • Changer l'ordre des colonnes
  • Changer le type de données d'une colonne

EDIT 1:

Informations utiles supplémentaires de ici :

Pour modifier l'option Empêcher l'enregistrement des modifications nécessitant l'option de recréation de la table, 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. Activez ou désactivez la case à cocher Empêcher l'enregistrement des modifications nécessitant la recréation de la table, puis cliquez sur OK.

Remarque 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 modifié la structure de métadonnées de la table. Dans ce cas, vous risquez de perdre des données lorsque vous enregistrez la table.

Risque de désactiver l'option "Empêcher l'enregistrement des modifications nécessitant la recréation de tables"

Désactiver cette option peut vous aider à éviter de recréer une table, mais peut également entraîner la perte de modifications. Par exemple, supposons que vous activiez la fonctionnalité Suivi des modifications dans SQL Server 2008 pour suivre les modifications apportées à la table. Lorsque vous effectuez une opération provoquant 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 lorsque la table est recréée. Par conséquent, nous vous recommandons de ne pas contourner ce problème en désactivant l'option.

Settings, screen shot

91
pylover

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 valeur NULL.

Option 2:

vous pouvez modifier vos options SQL Management Studio comme

Pour modifier cette option, dans le menu Outils, cliquez sur Options, développez Concepteurs, puis cliquez sur Concepteurs de tables et de bases de données. Activez ou désactivez la case à cocher Empêcher l'enregistrement des modifications nécessitant la recréation de la table.

6
Kishore Kumar

Empêcher l'enregistrement des modifications nécessitant la recréation de la table

Cinq Swift clics

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

  1. Outils
  2. Options
  3. Designers
  4. Empêcher l'enregistrement des modifications nécessitant la recréation de la table
  5. [~ # ~] ok [~ # ~] .

Après avoir sauvegardé, répétez la procédure pour cocher à nouveau la case. Ceci protège contre la perte accidentelle de données.

Explication supplémentaire

  • Par défaut, SQL Server Management Studio empêche la suppression de tables car, lorsqu’une table est supprimée, son contenu de données est perdu. *

  • Lors de la modification du type de données d'une colonne dans la table en mode Création, lors de l'enregistrement des modifications, la base de données supprime la table en interne, puis en recrée une nouvelle.

* Vos circonstances spécifiques ne poseront pas de conséquences puisque votre table est vide. Je fournis cette explication entièrement pour améliorer votre compréhension de la procédure.

2