“Empêcher l'enregistrement des modifications qui exigent la table pour être re-créé” effets négatifs
Préambule
J'ai été à la modification d'une colonne dans SQL Server 2008 aujourd'hui, en changeant le type de données à partir de quelque chose comme de la monnaie(18,0) à (19,2).
J'ai eu le message d'erreur "Les modifications que vous avez effectuées nécessitent les tableaux suivants pour être supprimé et re-créé" à partir de SQL Server.
Avant de se démener pour répondre, veuillez lire ce qui suit:
Je sais déjà il y a l'option dans Outils ► Options ► Designer ► Table et Concepteurs de bases de données ► Décochez la case "Empêcher l'enregistrement des modifications qui exigent la table de re-création."
...donc ne pas réponse avec cette!
Question réelle
Ma question est pour autre chose, comme suit:
Existe-il des effets négatifs /inconvénients possibles de le faire?
La table réellement obtenir supprimé et recréé automatiquement lorsque cette case n'est pas cochée?
Si oui, est la copie de la table 100% exacte réplique de la table source?
- Outils > Options > Designer... c'est a que je cherchais! Merci!
- jetez aussi un oeil à stackoverflow.com/questions/9870968/...
- Et si vous êtes avec MS SQL Server 2014 -> Extras>Options>Designer à Partir du menu du haut.
Vous devez vous connecter pour publier un commentaire.
Le tableau n'est supprimée et recréée dans les cas où c'est la seule façon de SQL Server Management Studio a été programmé pour savoir comment le faire.
Il y a certainement des cas où cela ne sera que lorsqu'il n'est pas nécessaire, mais il y aura aussi des cas où les modifications que vous apportez dans la Gestion de Studio pas supprimer et recréer parce qu'il n'a pas à.
Le problème est que l'énumération de tous les cas et de déterminer de quel côté de la ligne, ils tombent sur va être assez fastidieux.
C'est pourquoi je tiens à utiliser
ALTER TABLE
dans une fenêtre de requête, au lieu de concepteurs visuels qui cachent ce qu'ils font (et franchement, avoir des bugs) - je sais exactement ce qui va arriver, et je peux vous préparer pour les cas où la seule possibilité est de supprimer et de recréer la table (ce qui est un chiffre inférieur à la façon dont souvent SSMS va le faire pour vous).Outils --> Options - > nœud Concepteurs --> Décocher la case " Empêcher l'enregistrement des modifications qui exigent la table des loisirs ".
Référence - La désactivation de cette option peut vous aider à éviter la re-création d'un tableau, il peut aussi conduire à des changements de perdu. Par exemple, supposons que vous activez la fonction Suivi des modifications dans SQL Server 2008 pour suivre les modifications apportées à la table. Lorsque vous effectuez une opération qui provoque la table pour être re-créé, vous recevez le message d'erreur qui est mentionné dans la section "Symptômes". Toutefois, si vous désactivez cette option, les informations de suivi des modifications est supprimé lorsque la table est re-créé. Par conséquent,Microsoft vous recommande de ne pas contourner ce problème en désactivant l'option.
SQL Server supprime et recrée les tableaux que si vous:
À l'aide de ALTER est plus sûr, comme dans le cas des métadonnées est perdu pendant que vous re-créer la table, vos données seront perdues.
IDENTITY
de propriété sur une colonne, par exemple.Oui, il y a des effets négatifs de cette:
Si vous un script pour un changement bloqué par ce drapeau, vous obtenez quelque chose comme le script ci-dessous (tous je suis en train de la colonne ID en Contact dans la numérotation automatique de la colonne d'IDENTITÉ, mais le tableau a des dépendances).
Souligner les erreurs qui peuvent se produire alors que le suivant est en cours d'exécution:
--