web-dev-qa-db-fra.com

Enregistrement des modifications après la modification de la table dans SQL Server Management Studio

Si je veux enregistrer des modifications dans une table, précédemment enregistrées dans SQL Server Management Studio (aucune donnée dans la table), un message d'erreur s'affiche:

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 à une table qui ne peuvent pas être recréées, soit activé l'option Empêcher l'enregistrement des modifications nécessitant la recréation de la table.

Qu'est-ce qui peut empêcher la table d'être facilement modifiée? Ou bien, est-ce le moyen habituel pour SQL Server Management Studio d’imposer la recréation d’un tableau pour l’édition? De quoi s'agit-il - this "option Empêcher l'enregistrement des modifications"?

240
rem

Allez dans Outils -> Options -> Designers-> Décochez la case "Empêcher l'enregistrement des modifications qui requièrent une re-création de table". Voila.

Cela se produit car il est parfois nécessaire de supprimer et de recréer une table pour changer quelque chose. Cela peut prendre un certain temps, car toutes les données doivent être copiées dans une table temporaire, puis réinsérées dans la nouvelle table. Puisque SQL Server par défaut ne vous fait pas confiance, vous devez dire "OK, je sais ce que je fais, maintenant laissez-moi faire mon travail."

526
Pedro

Outils> Options

enter image description here

Décocher l'option ci-dessus

107
Prasanna

Pour contourner ce problème, utilisez des instructions SQL pour apporter les modifications à la structure de métadonnées d'une table.

Ce problème se produit lorsque l'option "Empêcher l'enregistrement des modifications nécessitant la recréation de la table" est activée.

Source: Message d'erreur lorsque vous essayez d'enregistrer une table dans SQL Server 2008: "L'enregistrement des modifications n'est pas autorisé"

71
Daniel Vassallo

Plutôt que de décocher la case (solution médiocre), vous devriez ARRÊTER de modifier les données de cette façon. Si les données doivent être modifiées, faites-le avec un script, de sorte que vous puissiez facilement le porter en production et qu'il soit sous contrôle de source. Cela facilite également l'actualisation des modifications de test une fois que la production a été réduite à la dev pour permettre aux développeurs de travailler avec des données plus récentes.

15
HLGEM

Allez à SSMS et essayez ceci

Menu >> Outils >> Options >> Designers >> Décochez la case "Empêcher l'enregistrement des modifications nécessitant la recréation de tables".

Voici une très bonne explication à ce sujet: http://blog.sqlauthority.com/2009/05/18/sql-server-fix-management-studio-error-saving-changes-in-not-permitted -les-modifications-que-vous-avez-faites-exigez-les-tables-suivantes-à-être-supprimées-et-recréées-vous-avez-faites-soit-faites-des-modifications-à-un-onglet /

14
Rolwin C

De nombreuses modifications que vous pouvez effectuer très facilement et visuellement dans l'éditeur de table de SQL Server Management Studio nécessitent en fait que SSMS supprime la table en arrière-plan et la recrée de nouveau. Même des opérations simples, telles que la réorganisation des colonnes, ne peuvent pas être exprimées dans une instruction DDL SQL standard: tout ce que SSMS peut faire est de supprimer et de recréer la table.

Cette opération peut prendre a) beaucoup de temps sur une grande table, ou b) même échouer pour diverses raisons (contraintes FK et autres). Par conséquent, SSMS dans SQL Server 2008 a introduit cette nouvelle option que les autres réponses ont déjà identifiée.

Cela peut sembler contre-intuitif au début d'empêcher de tels changements - et c'est certainement une nuisance pour un serveur de dev. Mais sur un serveur de production, cette option et sa valeur par défaut d'empêcher de tels changements deviennent un moyen de sauver des vies!

14
marc_s

C’est un risque de désactiver cette option. Vous pouvez perdre des modifications si le suivi des modifications est activé (vos tables).

Chris

http://chrisbarba.wordpress.com/2009/04/15/sql-server-2008-cant-save-changes-to-tables/

6
Chris