comment changer la rassembler pour toutes les colonnes de la base de données?
Je doit changer le classement de toutes les colonnes de toutes les tables de ma base de données. Dans d'autres post dans le débordement de la pile, j'ai trouvé ce script: (post)
SELECT 'ALTER TABLE [' + SYSOBJECTS.Name + '] ALTER COLUMN [' + SYSCOLUMNS.Name + '] ' +
SYSTYPES.name +
CASE systypes.NAME
WHEN 'text' THEN ' '
ELSE
'(' + RTRIM(CASE SYSCOLUMNS.length
WHEN -1 THEN 'MAX'
ELSE CONVERT(CHAR,SYSCOLUMNS.length)
END) + ') '
END
+ ' ' + ' COLLATE Latin1_General__CI_AI ' + CASE ISNULLABLE WHEN 0 THEN 'NOT NULL' ELSE 'NULL' END
FROM SYSCOLUMNS , SYSOBJECTS , SYSTYPES
WHERE SYSCOLUMNS.ID = SYSOBJECTS.ID
AND SYSOBJECTS.TYPE = 'U'
AND SYSTYPES.Xtype = SYSCOLUMNS.xtype
AND SYSCOLUMNS.COLLATION IS NOT NULL
AND NOT ( sysobjects.NAME LIKE 'sys%' )
AND NOT ( SYSTYPES.name LIKE 'sys%' )
GO
Cependant, quand je vois le classement des colonnes, je vois que le classement est l'ancien classement.
Le réel de classement est AUSSI, pour que je puisse avoir "ANIMAL" et "ÁNIMAL". Lorsque j'exécute le script, je n'ai pas d'erreur. Je pense que j'aurais une erreur, car le nouveau classement est l'IA. Donc, cela me fait penser que le script ne rien faire.
Pourquoi ne puis-je modifier le classement de toutes les colonnes de toutes mes tables dans la base de données?
Grâce.
- Légèrement différente de réponse de la base de données est déjà construit. stackoverflow.com/questions/21149470/...
Vous devez vous connecter pour publier un commentaire.
Essayez celui -
Requête:
De sortie:
Je suis de poster une modification à la réponse ci-dessus, qui porte char et varchar longueurs, comme mon édition précédente dirait que c'est d'être rejeté.
Merci à tous pour votre suggestion, il m'aide beaucoup lors de la migration de ma base de données à partir de SQL Server 2008 R2 pour 2014
REMARQUE: Certains de la requête ne sont pas valides VARCHAR(-), je l'ai changé en VARCHAR(MAX), et il fonctionne très bien.
Étapes de changement de Classement:
Tandis qu'aucun des autres approches ont travaillé pour moi, cet article de Douglas P. Castilho m'a fourni une solution complète. Je le partage dans le cas où il peut aider n'importe qui.
Que c'est.
Avant d'effectuer cette opération veuillez lire cet article en premier.
https://www.mssqltips.com/sqlservertip/3221/how-to-change-the-collation-of-a-sql-server-column/
Après la lecture de l'article ci-dessus et assurez-vous que vous avez retiré ci-dessous les références de votre base de données.
automatiquement ou par l'instruction CREATE STATISTICS
Frappé le script ci-dessous sur votre base de données après que n'oubliez pas de changer également le classement de base de données.
Pour toute personne à la recherche de cette solution qui est à l'aide de PHPMyAdmin, il y a une option au bas de la Base de données "Opérations" de l'onglet (cliquez sur une db d'abord, puis les "opérations" de l'onglet sur le haut de la barre d'outils); faites défiler jusqu'à la zone classement, sélectionnez un classement, cochez les deux cases à cocher(apparaît lorsque le premier est coché) :
Semble fondamentalement exécuter un script comme celles publiées; la console affiche la dernière commande exécutée: