web-dev-qa-db-fra.com

SQL Server Management Studio - comment modifier un type de champ sans supprimer de table

Dans SQL Server Management Studio, lorsque je modifie un champ existant en mode Création de DECIMAL (16,14) à DECIMAL (18,14), cela ne me permet pas de sauvegarder sans supprimer la table entière et toutes ses données. 

Est-il possible de changer un type de champ une fois qu'une base de données est renseignée avec des enregistrements? 

21
Prometheus

Utilisez simplement le script T-SQL au lieu du concepteur visuel pour atteindre votre objectif:

ALTER TABLE dbo.YourTableNameHere
ALTER COLUMN YourColumnNameHere DECIMAL(18, 14) 

et ça devrait aller.

Le concepteur visuel prend la route très prudente consistant à créer la table avec la nouvelle structure, puis à copier sur toutes les données - cela fonctionne, mais c'est fastidieux. Normalement, tant que vous ne tronquez pas une colonne (ne la raccourcissez pas), vous pouvez définitivement modifier le type de données de la colonne "en place" à l'aide d'une instruction T-SQL.

Aussi: par défaut, le concepteur SSMS est très prudent et n'autorise aucune modification nécessitant un cycle de table de type "déposer-recréer". Vous pouvez désactiver cette précaution supplémentaire dans Tools > Options puis dans cette boîte de dialogue:

enter image description here

Si vous décochez cette option, vous pourrez effectuer des modifications "destructives" dans votre concepteur visuel.

54
marc_s

Designer continuera à supprimer la table, même si l'option n'est pas cochée dans SSMS. Cela ne vous demandera tout simplement pas la prochaine fois. Pour le prouver, lancez le profileur SQL et modifiez une colonne à l'aide du concepteur SSMS. Vous verrez alors une commande drop table émise avant l'exécution de la commande Alter table.

0
user6710238