J'ai besoin d'une requête qui va modifier une seule colonne de nvarchar (max) à 32. Le vrai problème est que cette table a 800 000 lignes. Et mon alter table myTable alter colonne mycolumn expire. Des suggestions ou des astuces?Les colonnes de conversion SQL expirent
Répondre
Peut-être ajouter une nouvelle colonne, puis en sélectionnant les données dans la nouvelle colonne, puis supprimer l'ancienne colonne et renommer la nouvelle colonne avec le nom d'origine aidera.
Une autre approche plus simple consisterait à créer une nouvelle table avec les spécifications si nécessaire, puis de sélectionner .. dans. Une fois cette opération terminée, l'ancienne table peut être supprimée.
je ne peux pas supprimer la table –
mais vous pouvez supprimer toutes les lignes/tronquer? – codymanix
Voir this.
Vous pouvez également spécifier le compteur de délai d'attente ou simplement désactiver via l'interface graphique.
Deux choses que je peux penser à essayer:
d'abord faire- un
UPDATE
tronquer les données à 32 caractères; ce pourrait aider leALTER
s'exécuter plus rapidement, car il n'aura pas à faire de troncature lui-même. LeUPDATE
pourrait être groupé si nécessaire
Ou
- Créer une nouvelle
nvarchar(32)
colonne avec un nom temporaire - que vous le remplissiez de la colonne
nvarchar(max)
DROP
la colonnenvarchar(max)
- Renommez le Colonne
(32)
au nom d'origine de la colonne(max)
Si vous exécutez un script SQL dans SSMS, aucun délai d'attente n'est défini. Vous pouvez seulement obtenir un timeout en utilisant C# etc, et c'est le CommandTimeout par défaut de 30 secondes.
Je suggère de changer le timeout à 3600 par exemple, ou l'exécuter dans SSMS.
L'autre chose à penser de: ce changement sera enregistré afin qu'il puisse revenir en arrière. Assurez-vous de redimensionner le fichier journal à une taille respectable afin qu'il n'ait pas à croître de 10% à chaque fois (lorsque les modifications que vous effectuez utilisent l'espace de journalisation actuel).
Ou combiner avec la réponse de codymanix
Lorsque vous exécutez l'instruction, ouvrez une autre copie de SSMS et exécutez l'instruction
sp_who2
qui va vous montrer, entre autres, une colonne appelée " BlkBy ". C'est le SPID d'un processus qui peut bloquer votre requête. Vous pouvez avoir une transaction ouverte ailleurs dans le système. Si vous savez ce qu'est ce processus, et vous savez qu'il ne fera pas exploser votre univers, tuez-le.
- 1. lignes sql à colonnes conversion
- 2. Les jointures SQL sur les champs varchar expirent
- 3. Conversion des lignes à colonnes dans SQL
- 4. requête SQL conversion des lignes à colonnes
- 5. C# Collection dont les éléments expirent
- 6. conteneur où les valeurs expirent dans python
- 7. Les éléments memcache CakePHP expirent trop tôt
- 8. colonnes de conversion en lignes
- 9. Convertir ligne de SQL dans les colonnes
- 10. Conversion SQL
- 11. Conversion de toutes les colonnes DateTime à colonnes SQLDATETIME dans un Datatable
- 12. PHP - faire session expirent après X minutes
- 13. Pages expirent très rapidement dans Wicket
- 14. Prefix toutes les colonnes instruction T-SQL
- 15. newbie SQL Question concernant les colonnes calculées
- 16. groupe SQL par - Sélectionnez les deux colonnes
- 17. Conversion de SQL en HQL
- 18. Conversion sortie de requête SQL
- 19. Conversion de SQL Server à Oracle SQL
- 20. Conversion de date SQL (serveur)
- 21. types SQL Server de conversion
- 22. Conversion de SQL en LINQ
- 23. colonnes Sélection dans SQL
- 24. lignes SQL à colonnes
- 25. Conversion de données SQL avant de les présenter dans ListView
- 26. Conversion SQL LINQ
- 27. Lignes SQL vers colonnes
- 28. Sql Server datetime conversion
- 29. Conversion SQL Base32
- 30. conversion heure date sql
Modifiez le délai d'expiration. –
Pourquoi avez-vous marqué ceci comme C# et non sql-server? Aussi, est-ce SQL Server, Oracle, MySQL? Besoin de plus d'informations. –
Son SQL Server en raison de nvarchar (max) – gbn