Erreur du serveur SQL «L'enregistrement des modifications n'est pas autorisé» ► Empêcher l'enregistrement des modifications qui nécessitent une recréation de table

749

Lorsque je crée une table dans SQL Server et l'enregistre, si j'essaie de modifier la conception de la table, comme changer un type de colonne d'int en réel, j'obtiens cette erreur:

L'enregistrement des modifications n'est pas autorisé. La modification que vous avez effectuée nécessite que le tableau suivant soit supprimé et recréé. Vous avez soit apporté des modifications à une table qui ne peut pas être recréée, soit activé l'option d'empêcher l'enregistrement des modifications nécessitant 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.

Arash
la source

Réponses:

1466

De la boîte de dialogue Enregistrer (non autorisé) sur 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 la suppression et la recréation des tables répertoriées.

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

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

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 .

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

Robert Harvey
la source
7
SSMS ne devrait pas vous laisser faire quelque chose de dangereux sans vous en avertir au préalable. Mais ayez une sauvegarde sous la main, juste au cas où.
Robert Harvey
40
Cette option indique à SSMS qu'il peut aller de l'avant et créer une table temporaire dans un nouveau schéma, copier les données dans celui-ci, puis supprimer l'ancienne table et renommer la table temporaire au nom d'origine. Tout va bien pour faire ce qui devrait être dans la transaction, mais les relations seront rompues et recréées, si ce n'est pas 100%, cela pourrait faire quelque chose d'inattendu.
Justin King
13
Je ne sais pas pourquoi je ne me souviens pas de ces étapes simples pour dérouler cette option et je dois toujours rechercher la solution. Hehehehehe. Merci mec!
Développeur
8
Sainte vache - vous pouvez simplement désactiver cette option pour surmonter cette erreur ?? Je ne le savais pas et, depuis 3 ans, je vis dans la peur de concevoir par inadvertance une table sans spécification d'identité et d'avoir à créer une nouvelle table. Bon conseil!
nocarrier
4
Voici CAVEAT de Microsoft sur la désactivation de l'option «Empêcher l'enregistrement des modifications ...»: support.microsoft.com/en-us/kb/956176 . Fondamentalement, vous pouvez perdre des métadonnées comme le suivi des modifications, si c'est une fonctionnalité que vous utilisez.
Baodad
205

Utilisez-vous SSMS?

Si oui, accédez au menu Outils >> Options >> Concepteurs et décochez "Empêcher l'enregistrement des modifications nécessitant une recréation de la table"

ypercubeᵀᴹ
la source
Outils >> Options etc .. pas "Menu" (juste du point de vue ssms 2014 qui je pense est le même dans les anciennes versions)
Tom Stickel
@TomStickel Je suppose que je voulais dire allez dans le menu: "Outils"
ypercubeᵀᴹ
: P Oui, je pensais que, je pensais juste que je commenterais pour quiconque serait réellement "coincé", effrayant je sais mais je suppose que certaines personnes pourraient rapidement lever les mains ... thx
Tom Stickel
2
@NeilMeyer prenez garde que la case à cocher y soit cochée pour une raison. C'est une mesure de sécurité pour éviter les opérations qui vont tomber et recréer une table (et donc perdre toutes ses données ! Alors, utilisez avec prudence!
ypercubeᵀᴹ
les relations entre les tables seront-elles perdues si les tables sont recréées comme ceci?
Neil Meyer
78

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

Cinq clics rapides

Empêcher l'enregistrement des modifications nécessitant une recréation de table en cinq clics

  1. Outils
  2. Les options
  3. Designers
  4. Empêcher l'enregistrement des modifications nécessitant une recréation de table
  5. OK .

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

Plus d'explications

  • Par défaut, SQL Server Management Studio empêche la suppression des 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 en mode Création de table, 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équence puisque votre table est vide. Je fournis cette explication entièrement pour améliorer votre compréhension de la procédure.

WonderWorker
la source
27

Pour modifier l'option Empêcher l'enregistrement des modifications qui nécessitent l'option de recréation de 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 Concepteurs.

Activez ou désactivez la case à cocher Empêcher l'enregistrement des modifications qui nécessitent la recréation du tableau, 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 des métadonnées de la table. Dans ce cas, une perte de données peut se produire lorsque vous enregistrez la table.

entrez la description de l'image ici

Tabish Usman
la source
Le concepteur de table est pratique, mais vous ne pouvez pas tout réaliser avec
Sitecore Sam
22

C'est un problème de réglage très facile et simple qui peut être résolu en 5 secondes en suivant ces étapes

Pour vous permettre d'enregistrer les modifications après avoir modifié la table, veuillez suivre ces étapes pour votre paramètre SQL:

  1. Ouvrez Microsoft SQL Server Management Studio 2008
  2. Cliquez sur les options du menu Outils, puis sur Options
  3. Sélectionner des concepteurs
  4. Décochez l'option "Empêcher l'enregistrement des modifications nécessitant une recréation de table"
  5. Cliquez sur OK
  6. Essayez de modifier votre table
  7. Vos modifications seront effectuées comme vous le souhaitez
Rizwan Gill
la source
8
comment cela ajoute-t-il d'une manière ou d'une autre à la réponse acceptée?
Immortal Blue du
17

Allez sur l' outil situé dans le menu supérieur.
Choisissez les options dans la liste déroulante.Vous avez maintenant une fenêtre contextuelle qui sélectionne l' option Designers située sur le bloc de gauche des menus. Décochez l'option Empêcher l'enregistrement des modifications qui nécessitent une recréation de table . Cliquez sur le bouton OK.

FIFO BIZSOL
la source
12

Décochez la Prevent saving changes that require table re-creationcase Outils ► Options ► onglet Concepteurs .

Exemple SQL Server 2012:

entrez la description de l'image ici

pedram
la source
12

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électionner des concepteurs
  5. Décochez "Empêcher l'enregistrement des modifications nécessitant une recréation de table"
  6. Cliquez sur OK

entrez la description de l'image ici

Irshad Ahmed Akhonzada
la source
7

Copié à partir de ce lien "... Important Nous vous recommandons vivement de ne pas contourner ce problème en désactivant l'option Empêcher l'enregistrement des modifications qui nécessitent une recréation de table. Pour plus d'informations sur les risques de désactiver cette option, consultez la" Plus d'informations "."

"... Pour contourner ce problème, utilisez des instructions Transact-SQL pour apporter les modifications à la structure de métadonnées d'une table. Pour plus d'informations, consultez la rubrique suivante dans la documentation en ligne de SQL Server

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

alter table MyTable alter colonne MyDate7 datetime NULL "

Panagiotis
la source
2
Avec autant de réponses disant toutes la même chose, c'était la réponse que je cherchais depuis que j'avais des données en direct dans ma table que je ne voulais pas perdre. J'avais besoin de mettre à jour une colonne décimale de 0 décimale à 2 décimales et la simple instruction alter a parfaitement fonctionné!
stitz
La tragédie ici est que SSMS devrait faire exactement cela sous le capot et donc ne pas nécessiter de laisser tomber la table
m12lrpv
6

Et juste au cas où quelqu'un ici ne ferait pas attention (comme moi):

Pour Microsoft SQL Server 2012, dans la boîte de dialogue des options, il y a une petite case à cocher sournoise qui masque APPAREMMENT tous les autres paramètres. Même si je dois dire que j'ai raté ce petit monstre tout ce temps !!!

Après cela, vous pouvez continuer avec les étapes, concepteur, décochez empêcher l'enregistrement bla bla bla ...

sneaky_check_box_in_option

Gellie Ann
la source
5

Outils >> Options >> Concepteurs et décochez «Empêcher l'enregistrement des modifications qui nécessitent une recréation de table»:

Description au format photos

سیدرسول میرعظیمی
la source
2

1) Ouvrez l'outil qui est sur le dessus.
2) Choisissez des options dans la liste de sélection.
3) Vient maintenant la fenêtre contextuelle et vous pouvez maintenant sélectionner l'option des concepteurs dans la liste des menus sur le côté gauche.
4) Désormais, empêcher l'enregistrement des modifications doit être décoché pour recréer la table. Maintenant, cliquez sur OK.

Rishabh Seth
la source
1

Dans le menu Outils, cliquez sur Options, sélectionnez Concepteurs dans le menu latéral et décochez les modifications qui peuvent entraîner la recréation d'une table. Enregistrez ensuite les modifications

Ogbonna Vitalis
la source
0

Si vous ne pouvez pas voir les « Prévenir d' enregistrer les modifications qui nécessitent la recréation de table » dans la liste comme l'image

Vous devez activer le suivi des modifications.

  • Faites un clic droit sur votre base de données et cliquez sur Propriétés
  • Cliquez sur le suivi des modifications et activez-le
  • Allez à nouveau Outils -> Options -> Designer et décochez-le.
Emre Karataşoğlu
la source
0

Si vous utilisez SQL Server Management Studio, accédez à Outils >> Options >> Concepteurs et décochez "Empêcher l'enregistrement des modifications qui nécessitent une recréation de la table". Cela fonctionne avec moi.

Taher Chtaywi
la source