SQL Server 2008 – Différence entre les types de classment

J'installe un nouveau server SQL Server 2008 et rencontre des problèmes pour get des informations utilisables concernant différents classments. J'ai recherché SQL Server BOL et google'ed pour une réponse mais ne peux pas sembler pouvoir find n'importe quelles informations utilisables.

  1. Quelle est la différence entre le Windows Collation "Finnish_Swedish_100" et "Finnish_Swedish" ?

    Je suppose que le "_100" -version est un classment mis à jour dans SQL Server 2008, mais quelles choses ont changé de l'ancienne version si c'est le cas?

  2. Est-ce généralement une bonne chose d' "Accent-sensitive" ? Je sais que cela dépend de la tâche et de tout cela, mais y a-t-il des avantages et des inconvénients bien connus à considérer?

  3. Les parameters "Binary" et "Binary-code point" , dans quels cas doivent-ils être activés?

Le _100 indique une séquence de classment nouvelle dans SQL Server 2008, ceux avec _90 sont pour 2005 et ceux sans suffixe sont 2000. Je ne sais pas quelles sont les différences, et ne peut pas find de documentation. À less que vous ne fassiez des requêtes server liées à un autre server SQL d'une version différente, je serais tenté d'utiliser le server _100. Désolé je ne peux pas aider avec les différences.

Les lettres ÅÄÖ / åäö ne se mélangent pas avec A et O en réglant le classment sur AI (Accent Insensitive). Cela est cependant vrai pour â et d'autres "combinaisons" qui ne font pas partie de l'alphabet suédois en tant que lettres individuelles. â va mélanger ou ne pas mélanger en fonction du réglage en question.

Comme j'ai beaucoup de vieilles bases de données avec lesquelles je dois encore communiquer, en utilisant aussi des servers liés, j'ai choisi _SWEDISH _CI _AS finlandais maintenant que j'installe SQL2008. C'était le paramètre par défaut pour FINSHIP _SWEDISH lorsque les classments Windows sont apparus pour la première fois dans SQL Server.

Pour répondre à la question 3 (informations extraites du MSDN , leur libellé, formatting de la mienne):

Binaire ( _BIN ):

  • Trie et compare datatables dans les tables SQL Server en fonction des templates de bits définis pour chaque caractère.
  • L'ordre de sorting binary est sensible à la casse et à l'accent.
  • Le binary est également l'ordre de sorting le plus rapide.
  • Si cette option n'est pas sélectionnée, SQL Server suit les règles de sorting et de comparaison définies dans les dictionarys pour la langue ou l'alphabet associé.

Point de code binary ( _BIN2 ):

  • Pour datatables Unicode: Trie et compare datatables dans les tables SQL Server en fonction des points de code Unicode.
  • Pour datatables non-Unicode: utilisera des comparaisons identiques aux sortings binarys.

L'avantage d'utiliser un ordre de sorting de points de code binary est qu'aucun recours aux données n'est requirejs dans les applications qui comparent datatables SQL Server sortingées. Par conséquent, un ordre de sorting de points de code binary simplifie le développement d'applications et augmente les performances.

Pour plus d'informations, consultez les Consignes d'utilisation des classments BIN et BIN2 .

Utilisez la requête ci-dessous pour l'essayer vous-même.

Comme vous pouvez le voir, å, ä, etc. ne countnt pas comme caractères accentués, et sont sortingés en fonction de l'alphabet suédois en utilisant la collation finnoise / suédoise.

Cependant, les accents ne sont pris en count que si vous utilisez le classment AS . Pour le classment AI , leur ordre est inchangé, comme s'il n'y avait pas d'accent du tout.

 CREATE TABLE #Test ( Number int identity, Value nvarchar(20) NOT NULL ); GO INSERT INTO #Test VALUES ('àá'); INSERT INTO #Test VALUES ('áa'); INSERT INTO #Test VALUES ('aa'); INSERT INTO #Test VALUES ('aà'); INSERT INTO #Test VALUES ('áb'); INSERT INTO #Test VALUES ('ab'); -- w is considered an accented version of v INSERT INTO #Test VALUES ('wa'); INSERT INTO #Test VALUES ('va'); INSERT INTO #Test VALUES ('zz'); INSERT INTO #Test VALUES ('åä'); GO SELECT Number, Value FROM #Test ORDER BY Value COLLATE Finnish_Swedish_CI_AS; SELECT Number, Value FROM #Test ORDER BY Value COLLATE Finnish_Swedish_CI_AI; GO DROP TABLE #Test; GO 

Pour répondre à votre question 1. Accent sensible est une bonne chose à avoir activé pour le finnois-suédois. Sinon, vos "å" et "ä" seront classés comme "a" et "ö" comme "o". (En supposant que vous utiliserez ce genre de caractères internationaux).

Plus ici: http://msdn.microsoft.com/en-us/library/ms143515.aspx (discute à la fois le code binary et la sensibilité d'accent)

Sur les questions 2 et 3

La sensibilité d'accentuation est quelque chose que je suggérerais d'éteindre si vous acceptez des données d'user, et sur MARCHE si vous avez des données propres et aseptisées. N'étant pas finlandais moi-même, je ne sais pas combien de mots sont différents en fonction du ó ô õ ou ö qu'ils ont en eux. Mais s'il y a des users qui entrent des données, vous pouvez être sûr qu'ils ne seront pas cohérents dans leur utilisation, et vous voulez être capable de les faire correspondre. Si vous collectez des données à partir d'un set de données dont vous connaissez le contenu et dont vous connaissez la cohérence, vous devez activer la sensibilité d'accentuation car vous savez que les différences sont utiles.

Les mêmes questions s'appliquent à la question 3. (Je reçois la plupart du contenu du lien fourni par Tomalak) Si datatables sont sensibles aux majuscules et aux minuscules, alors vous voulez _BIN, car il sortingera plus rapidement. Si datatables sont irrégulières et ne sont pas sensibles à la casse / accentuation, alors vous aurez besoin de _BIN2, car il est conçu pour datatables Unicode.

Pour répondre à la question 2:

Oui, si l'accent est requirejs grammer pour la langue donnée.