2010-03-12 1 views
11

Je me demande s'il est un moyen de forcer MSSQL Management Studio pour produire un script comme celui-ci:Obliger Management Studio à utiliser ALTER TABLE au lieu de DROP/CREATE

ALTER TABLE Mytable 
ADD MyCol bit NOT NULL 
CONSTRAINT MyColDefault 
DEFAULT 0 WITH VALUES 


ALTER TABLE [dbo].Mytable 
ALTER COLUMN MyCol2 int NULL 

GO 

quand je modifier une propriété très simple d'une colonne sur une table. Si je fais cela dans le concepteur et demande le script produit, le script ne fait pas de tâches simples, mais copie toutes les données dans une table tmp, supprime la table d'origine, renomme la table tmp avec le nom de la table d'origine . Et, bien sûr, laisse tomber et recrée chaque contrainte et relation.

Y at-il une option que je peux changer pour changer ce comportement? Ou, cela peut être possible, y a-t-il un danger que je ne vois pas en utilisant le simple ALTER TABLE ci-dessus?

merci.

+0

Avez-vous déjà trouvé un moyen de le faire Marco? – AnotherDeveloper

Répondre

5

Vous ne pouvez pas changer le comportement, c'est juste que le script par défaut qu'il crée n'est pas toujours le plus efficace. Il crée des scripts dans un format sait fonctionnera, bien que souvent les résultats seront lents et lourds de ressources. Je vous recommande de vous habituer à créer vous-même le script pour tous les changements, car vous pouvez mieux l'optimiser. Il n'y a rien de mal avec ce que vous avez créé (à condition que vous n'ayez pas de contraintes/dépendances existantes sur MyCol2 qui serait invalidé en devenant un int nullable)

7

Oui, vous pouvez!

Dans SQL Server Management Studio, passez en mode de conception de table pour la table en question et apportez vos modifications. Cependant: ne pas cliquez sur le bouton "Enregistrer", mais au lieu de cliquer droit dans la vue de conception de table, il devrait y avoir un élément "Générer un script de modification" à la fin de votre menu contextuel.

alt text http://i40.tinypic.com/33e7ite.png

Cliquez sur cet élément de menu et vous aurez présenté une boîte de dialogue pop-up qui contient le script T-SQL nécessaire pour faire les modifications apportées à la table dans le concepteur. Copiez ou enregistrez ce code T-SQL, et annulez hors du concepteur, et voila - vous avez votre script de changement! Marco, désolé, je ne pense pas qu'il y ait une option pour changer le comportement par défaut, du moins pas pour l'instant. Vous pourriez vouloir déposer une demande d'amélioration avec Microsoft sur Microsoft Connect pour proposer cette - bonne idée, je pense!

+1

Salut Marc, je suis désolé peut-être que je ne me suis pas fait comprendre. Je le sais, et c'est ainsi que j'ai su que SQLMS fait les choses de cette façon. J'aurais aimé savoir s'il y avait moyen de modufier son comportement par défaut. Ce que vous suggérez est utile pour utiliser le script plus tard, et en effet c'est ce que je veux faire. Dommage que le script généré ici soit lourd et pas efficace en ressources dans la situation habituelle, à mon humble avis. salut! – marco

-1

facile! Passez simplement au Tool ->Option, puis au nœud Designer et sélectionnez Table and Database designer pour que vous puissiez décocher la case Prevent saving changes that require ....

Maintenant, vous pouvez faire toute chage sur la conception de vos tables!

+3

Cela vous donnera une erreur au lieu d'enregistrer vos modifications - il ne fera pas l'utilisateur designer ALTER TABLE. –

Questions connexes