922 votes

Erreur Sql Server 'La sauvegarde des modifications n'est pas autorisée' ► Empêcher la sauvegarde des modifications qui nécessitent la recréation de la table.

Lorsque je crée une table dans SQL Server et que je l'enregistre, si j'essaie de modifier la conception de la table, par exemple en changeant le type de colonne de int à real, j'obtiens cette erreur :

La sauvegarde des modifications n'est pas autorisée. La modification que vous avez apportée nécessite la suppression et la recréation de la table suivante. Vous avez soit apporté des modifications à une table qui ne peut pas être recréée, soit activé l'option empêchant l'enregistrement des modifications qui nécessitent la recréation de la table.

Pourquoi dois-je recréer la table ? Je veux juste changer un type de données de smallint à real .

La table est vide, et je ne l'ai pas utilisée jusqu'à présent.

3 votes

1708voto

Robert Harvey Points 103562

De Boîte de dialogue Enregistrer (non autorisé) sur MSDN :

Le site Sauvez (Non autorisé) vous avertit que l'enregistrement des modifications n'est pas n'est pas autorisée parce que les modifications que vous avez apportées exigent 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 <<<<

Pour modifier cette option, sur l'écran Outils cliquez sur Options , développer Designers puis cliquez sur Concepteurs de tableaux et de bases de données . Sélectionnez ou effacez le Empêcher l'enregistrement des modifications qui nécessitent que la table soit recréée la case à cocher.

Voir aussi Entrée du blog de Colt Kwong :
La sauvegarde des modifications n'est pas autorisée dans SQL 2008 Management Studio

1 votes

merci ,,,, cela fonctionne ,,,, ce changement pourrait-il causer un problème à ma base de données ou à la table éditée ? ou est-ce sans danger ?

7 votes

SSMS ne devrait pas vous laisser faire quelque chose de dangereux sans vous en avertir au préalable. Mais ayez une sauvegarde à portée de main, juste au cas où.

52 votes

Cette option indique à SSMS qu'il peut aller de l'avant et créer une table temporaire dans le nouveau schéma, y copier des données, puis supprimer l'ancienne table et renommer la table temporaire au nom original. Tout se passe bien, comme cela devrait être le cas dans la transaction, mais les relations seront rompues et recréées, ce qui pourrait entraîner des résultats inattendus si ce n'est pas à 100%.

291voto

ypercube Points 62714

Utilisez-vous SSMS ?

Si oui, allez dans le menu Outils >> Options >> Concepteurs et décochez "Empêcher les changements d'enregistrement qui nécessitent la recréation d'une table"

7 votes

@NeilMeyer Attention, la case à cocher n'est pas cochée pour rien. Il s'agit d'une mesure de sécurité pour empêcher les opérations qui vont supprimer et recréer une table (et donc perdre des données). toutes ses données ! Donc, à utiliser avec prudence !

0 votes

Les relations entre les tables seront-elles perdues si les tables sont recréées de cette façon ?

1 votes

@NeilMeyer Je ne suis pas sûr de la déclaration exacte que SSMS produira. Il recréera probablement aussi tout FK abandonné.

103voto

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 la 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.

4 votes

C'est faux. Lorsque vous modifiez un tableau comme celui-ci et qu'il contient des données, celles-ci ne sont pas perdues. La nouvelle table sera créée avec toutes les données de la table originale à l'intérieur.

1 votes

Tous les index, valeurs par défaut, contraintes, déclencheurs, etc. seront également conservés. Selon la documentation de Microsoft, la seule chose que vous perdrez est le suivi des changements, une fonction que très peu de personnes utilisent ou activent. docs.microsoft.com/fr/US/troubleshoot/sql/ssms/

53voto

Irshad Ahmed Points 1026

Cela peut être modifié facilement dans Microsoft SQL Server .

  1. Ouvrez Microsoft SQL Server Management Studio 2008
  2. Cliquez sur le menu Outils
  3. Cliquez sur Options
  4. Sélectionnez les concepteurs
  5. Décochez "Empêcher l'enregistrement des modifications qui nécessitent la recréation d'une table".
  6. Cliquez sur OK

enter image description here

34voto

Tabish Usman Points 21

Pour modifier l'option Empêcher la sauvegarde des modifications qui nécessitent la recréation de la table, procédez comme suit :

Ouvrez SQL Server Management Studio (SSMS). Dans le menu Outils, cliquez sur Options.

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

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. Dans ce cas, une perte de données peut se produire lorsque vous enregistrez la table.

enter image description here

0 votes

Le créateur de tableaux est pratique, mais il ne permet pas de tout réaliser.

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