Complications avec la base de données SQL Server ayant un classement différent de celui par défaut du serveur?
Nous sommes dans le processus de migration des bases de données une vieille SQL Server 2k EE serveur avec classement par défaut "Latin1_General_CI_AS" sur SQL Server 2005 & 2008 serveurs avec classement par défaut "SQL_Latin1_General_CP1_CI_AS". Il n'y a aucun des caractères internationaux qui nécessiterait Unicode, que je sache, de sorte que les deux codes sont presque les mêmes pour des raisons pratiques.
La primaire de SQL Server DBA est inflexible sur le fait que chaque base de données unique (dont la plupart sont construits par la 3e partie apps) doit être reconstruit avec le nouveau classement avant de migrer.
Je sais que depuis SQL Server 2000, il a été possible de définir des bases de données individuelles d'avoir un classement différent de celui par défaut. Mais quelles sont les conséquences réelles de fonctionnement avec un mélange de classements? Un article de Microsoft suggère des complications avec le partage de la base de données tempdb, par exemple (mais peut facilement être évité?).
Et, peut-être plus important encore, que pourrions-nous faire pour éviter ces problèmes, si nous avons besoin de l'appui de plusieurs classements sur les nouveaux serveurs?
source d'informationauteur ewall
Vous devez vous connecter pour publier un commentaire.
Ok pas de la meilleure réponse, mais
Vous avez demandé: "Quelles sont les conséquences réelles de fonctionnement avec différents classements"
Il peut être un mal de tête. L'article que vous avez mentionnés par Microsoft clous sur la tête. Dans mon expérience personnelle, je suis tombé sur cette question et il n'était pas facile de les éviter.
Incompatibles classements pop up dans des endroits imprévus, à moins que vous testez.
- Vous également demandé "que pourrions-nous faire pour éviter ces problèmes, si nous avons besoin de l'appui de plusieurs classements sur les nouveaux serveurs?"
Rien ne vient à l'esprit à l'exception de test comme un fou.
Je souhaite vraiment que vous avez de la chance, elle peut être commune et poilu problème que je ne souhaite à personne.
Le problème avec des classements différents entre le serveur et le db est comme mentionner, avant que les tables temporaires par défaut sera créé avec le classement du serveur. Que vont faire les comparaisons sur des champs de caractère entre un temp de table et une table ordinaire échouer. Ceci peut être évité par les développeurs de la 3e partie des applications en utilisant RASSEMBLER database_default pour le personnage de champs de tables temporaires.
Je viens de l'autre côté. Je ne suis pas administrateur de base de données, mais une 3ème partie logiciel développeur et je pense qu'il est de ma responsabilité de construire mon appli pour travailler dans un environnement où le classement est différent entre la base de données et le serveur. C'est aussi de ma responsabilité que mon application va travailler avec classement sensible à la casse.
Ma réponse n'est pas bon, trop, mais:
nous avons d'abonné multiple serveurs de synchronisation avec notre base de données principale, et sur certains d'entre eux ont un classement qui n'est pas l'éditeur. Lors du lancement de la réplication, de nous garder sur l'obtention de ce "message de bienvenue" en nous disant que, "comme les classements ne sont pas identiques, la synchro risque de ne pas réussir".
Bien que ce problème ne s'était jamais vue, je pense qu'il y a un risque quelque part, et je pense que ce risque pourrait être lié à des choses comme l'intégrité référentielle et /ou d'autres contraintes sur les champs de caractère.
Ah: et il y a aussi ce majuscules\minuscules question en T-SQl instructions ... vérifier celui-ci ici
@Michael et votre DBA sont à droite .... limiter les risques, et l'utilisation d'un classement unique.