2009-05-05 8 views
1

J'ai modifié le classement de la base de données. Toutes les colonnes text/varchar avant la modification ont été définies sur default database. Lorsque la modification a été apportée au classement DB, je m'attendais à ce que les colonnes définies sur la base de données par défaut restent la base de données par défaut et restent donc liées au nouveau classement DB. Cependant, j'ai remarqué que ces colonnes ont été modifiées pour être spécifiquement fixées à l'ancienne collation.La modification du classement de la base de données ne met pas à jour le classement des champs varchar/text dans le DB (MS SQL)

J'ai un script qui va mettre à jour toutes les colonnes, mais je suis intrigué par la raison pour laquelle ces colonnes ne sont pas restées database_default ou au moins ont été définies pour le nouveau classement. Donc les questions que j'ai sont:

1: Pourquoi les colonnes n'ont-elles pas été mises à jour?

2: Est-il possible de les mettre à jour automatiquement?

Répondre

2

J'ai récemment rencontré ce problème moi-même. La modification du classement par défaut de la base de données fonctionne uniquement pour les nouveaux objets créés - il ne modifie aucun objet existant (source: Books Online - "Vous pouvez modifier le classement de tous les nouveaux objets créés dans une base de données utilisateur en utilisant la clause COLLATE de l'instruction ALTER DATABASE Cette instruction ne modifie pas le classement des colonnes dans les tables définies par l'utilisateur existantes.Cela peut être modifié à l'aide de la clause COLLATE de ALTER TABLE. "

Je ne connais aucun moyen de les mettre à jour automatiquement - vous devez les mettre à jour manuellement.J'ai utilisé la méthode de here

+0

Merci pour le lien - donc je ne deviens pas fou de voir que les colonnes de la table ne sont pas mis à jour! Semble un peu dommage que le option n'est pas donnée par MS pour mettre à jour tous colonnes. Cette ligne répond à ma question: "La commande ALTER DATABASE COLLATE ne changera que le classement * DEFAULT * de la base de données, elle ne changera pas le classement des objets existants (par exemple les colonnes et les tables). ordre de classement même si la valeur par défaut est modifiée. " Merci! – Madeleine

Questions connexes