2009-02-10 18 views
6

Estoy instalando un nuevo servidor SQL Server 2008 y estoy teniendo algunos problemas para obtener información utilizable con respecto a diferentes intercalaciones. He buscado SQL Server BOL y google'ed para obtener una respuesta, pero parece que no puedo encontrar ninguna información utilizable.Sql Server 2008 - Diferencia entre los tipos de intercalación

  1. ¿Cuál es la diferencia entre la intercalación de Windows "Finnish_Swedish_100" y "Finnish_Swedish"?

    Supongo que el "_100" -version es una intercalación actualizada en SQL Server 2008, pero ¿qué cosas han cambiado desde la versión anterior si ese es el caso?

  2. ¿Suele ser bueno tener "Accent-sensitive" habilitado? Sé que depende de la tarea y de todo eso, pero ¿hay algún pros y contras bien conocidos que considerar?

  3. Los parámetros "Binary" y "Binary-code point", ¿en qué casos deben habilitarse?

Respuesta

0

Para responder a su pregunta 1. Acento sensible es bueno haber habilitado para finlandés-sueco. De lo contrario, sus "å" sy "ä" s se clasificarán como "a" sy "ö" s como "o" s. (Suponiendo que usará ese tipo de caracteres internacionales).

Más aquí: http://msdn.microsoft.com/en-us/library/ms143515.aspx (punto de código binario discute tanto la sensibilidad y acento)

+0

Ah, ok! Eso fue bastante bueno saberlo. ¡Gracias! :) – Octadrone

+0

@Octadrone: Dado que probablemente puedas decir: ¿Cuál * es * el orden de clasificación esperado para los caracteres acentuados en Suecia? ¿"Å" se ordena por separado o se mezcla con otras formas de la letra "a"? – Tomalak

+1

El orden de clasificación esperado es [...] x y z å ä ö. Todo diferente. Sin embargo, 'v' y 'w' están ordenados como la misma letra. –

0

Para hacer frente a qestion 2:

Sí, si el acento de la gramática se requieren para el idioma dado.

3

El _100 indica una secuencia de clasificación nueva en SQL Server 2008, las que tienen _90 son para 2005 y las que no tienen sufijo son 2000. No sé cuáles son las diferencias y no puedo encontrar ninguna documentación. A menos que esté haciendo consultas de servidor vinculadas a otro servidor SQL de una versión diferente, estaría tentado de ir con el _100. Lo siento, no puedo ayudar con las diferencias.

+0

Ok, gracias por la información. Decidí optar por la intercalación "Finnish_Swedish_100_CI_AS", ya que la base de datos se utilizará con una nueva aplicación desarrollada. – Octadrone

2

Para hacer frente a la pregunta 3 (información tomada de la MSDN; redacción suya, la mía formato):

binario (_BIN):

  • Ordena y compara los datos en tablas de SQL Server a partir de los patrones de bits definido para cada personaje
  • El orden de clasificación binario distingue entre mayúsculas y minúsculas y es sensible al acento.
  • Binary es también el orden de clasificación más rápido.
  • Si no se selecciona esta opción, SQL Server sigue las reglas de clasificación y comparación definidas en los diccionarios para el idioma o alfabeto asociado.

punto de código binario (_BIN2):

  • Para Unicode de datos: Ordena y compara los datos en tablas de SQL Server en base a los puntos de código Unicode.
  • Para datos que no son Unicode: usará comparaciones idénticas a géneros binarios.

La ventaja de utilizar un criterio de ordenación punto código binario es que ninguna reordenación de datos es necesaria en aplicaciones que comparan los datos ordenados de SQL Server. Como resultado, un orden de clasificación de punto de código binario proporciona un desarrollo de aplicaciones más simple y posibles aumentos de rendimiento.

Para obtener más información, consulte Guidelines for Using BIN and BIN2 Collations.

0

En las preguntas 2 y 3

Accent sensibilidad es algo que sugeriría desconectar si acepta los datos del usuario, y de si tiene datos limpios y desinfectados. No siendo finlandés, no sé cuántas palabras hay diferentes según el ó ô õ o ö que tienen en ellas. Pero si hay usuarios que ingresan datos, puede estar seguro de que NO serán consistentes en su uso, y desea poder hacer coincidirlos. Si está recopilando datos de un conjunto de datos del que conoce el contenido y conoce la consistencia de, entonces querrá activar la Sensibilidad de acento porque sabe que las diferencias son decididas.

Las mismas preguntas se aplican cuando se considera la Pregunta 3. (Casi siempre obtengo esto del enlace proporcionado por Tomalak) Si los datos son sensibles a mayúsculas y minúsculas, entonces usted quiere _BIN, porque ordenará más rápido. Si los datos son irregulares y no son sensibles a mayúsculas/minúsculas, entonces querrá _BIN2, ya que está diseñado para datos Unicode.

+0

Siendo sueco yo mismo podría informarle que las letras åäö se usan muy a menudo en nuestro idioma. Entonces, en la mayoría de los casos, es probable que desee poder ordenarlos correctamente. – Octadrone

+0

Pido disculpas por mi ignorancia, sin embargo, si el 'ö' no está disponible, ¿usaría simplemente una 'o' o eso cambiaría completamente la palabra? – DevinB

+1

En la mayoría de los casos, solo creará una palabra que realmente signifique algo con un ö en lugar de o.Si eso también se utiliza en un contexto, creo que los suecos no tendrían problemas para comprender el significado. Sin embargo, los usuarios podrían esperar usar åäö en un sistema sueco. :) – Octadrone

3

Las letras ÅÄÖ/åäö no se mezclan con A y O simplemente estableciendo la clasificación en AI (Insensible a los acentos). Sin embargo, eso es cierto para â y otras "combinaciones" que no forman parte del alfabeto sueco como letras individuales. â se mezclará o no se mezclará dependiendo de la configuración en cuestión.

Dado que tengo muchas bases de datos antiguas con las que aún necesito comunicarme, también usando servidores vinculados, elegí FINNISH _SWEDISH _CI _AS ahora que estoy instalando SQL2008. Esa fue la configuración predeterminada para FINLANDES _SWEDISH cuando las intercalaciones de Windows aparecieron por primera vez en SQL Server.

2

Utilice la consulta a continuación para probarlo usted mismo.

Como puede ver, å, ä, etc. no cuentan como caracteres acentuados, y se ordenan según el alfabeto sueco cuando se utiliza la intercalación finlandés/sueco.

Sin embargo, los acentos solo se tienen en cuenta si utiliza la intercalación AS. Para la intercalación AI, su orden no se modifica, como si no hubiera ningún acento.

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 
Cuestiones relacionadas