2010-01-12 4 views

Répondre

1

Vous pouvez essayer Make New table et faire un petit curseur pour envoyer des données d'une table à l'autre table en plus petites parties.

Si votre tableau a date déposée, vous pouvez déplacer vos données par trimestre de l'année, Ainsi vous pouvez laisser respirer entre les requêtes.

+0

J'ai fermé le serveur SQL pour annuler le long processus de changement de type de données (il prenait beaucoup de temps). Mais maintenant que j'ai redémarré SSMS, je ne peux pas parcourir les tables dans ma base de données et j'obtiens cette erreur: Erreur 1222: Délai de demande de verrouillage dépassé! Devrais-je attendre que le verrou soit libéré? – Meysam

+0

Probablement, Parfois SSMS n'autorise pas les tables de navigation lorsque les serveurs sont en charge lourde. – adopilot

2

Supprimez les contraintes, les index et les déclencheurs de cette table et ralentissez également la mise à jour.

0

Plus que probablement ce qui se passe ici est que SSMS crée une table temporaire avec l'ancien schéma et copie toutes les lignes à cette table. Il crée ensuite une nouvelle table avec le nouveau schéma et copie les lignes de l'ancienne table. Je ne pense pas qu'il y ait quoi que ce soit dans SSMS que vous puissiez configurer pour changer cela, et c'est peut-être la seule façon de changer ce schéma particulier.

Randy

2

Ajouter une nouvelle colonne int à la table, mettez à jour la nouvelle colonne à la valeur de l'ancienne colonne, laissez tomber la vieille colonne, renommer la nouvelle colonne. Mon instinct est que ce sera plus rapide, mais je pourrais me tromper!

Je suppose que c'est un flottant pour l'instant, qu'il n'est utilisé dans aucun index.

0

La table ALter est généralement plus rapide que l'utilisation de SSMS. Cependant, dans ce cas, je suis d'accord avec doogstar, puisque vous devez convertir toutes les données en int, je créer une nouvelle colonne (que vous pouvez faire par lots pour améliorer les performances et éviter un verrouillage de table), puis abandonner l'ancien colonne et renommer le nouveau.

+0

Comment puis-je mettre à jour une colonne par lots? – Meysam

+0

C'est une sorte de croisement entre une technique basée sur un ensemble et une boucle, voici le lien pour montrer comment cela peut être fait: http://www.tek-tips.com/faqs.cfm?fid=3141 – HLGEM

Questions connexes