ver utf8 sql_latin1_general_cp1_ci_as modify ejemplos sql-server sql-server-2005 collation case-sensitive

sql-server - utf8 - sql_latin1_general_cp1_ci_as



¿Collation sqlserver significa que los nombres de las columnas deben ser correctos? Y cómo lidiar con eso (4)

En SQL Server (2000 o 2005), ¿es posible configurar la intercalación de la base de datos o del servidor para que los nombres de los identificadores (tablas, columnas, etc.) tengan que estar en el caso correcto? Si es así, ¿eso es cierto para todas las intercalaciones sensibles a mayúsculas y minúsculas o es una configuración separada? (Siempre he pensado en la aplicación de mayúsculas y minúsculas a los datos, no a los nombres de los objetos).

¿Presumiblemente esto rompería una aplicación si sus procesos almacenados y consultas no se escribieron con un caso consistente? ¿Hay alguna manera de solucionar esto sin tener que garantizar que todas las consultas utilicen el caso correcto, como establecer la intercalación de una conexión de base de datos?

Estoy viendo esto desde el punto de vista de tener una aplicación existente que probablemente haya codificado sql inconsistentemente en ella, y quiero poder ejecutarla contra bases de datos con intercalaciones diferentes. ¿Qué configuración necesitaría o con qué conjunto de intercalaciones de base de datos / servidor no podría usar la aplicación?


La intercalación es lo que determina si sus consultas serán insensibles a las mayúsculas y minúsculas. Por lo tanto, la única forma de garantizar que su esquema funcione en múltiples entornos es hacer que sus consultas sean sensibles a las mayúsculas y minúsculas. Si sus consultas no son consistentes, entonces su intercalación DEBE ser casera o de lo contrario no funcionará.

http://msdn.microsoft.com/en-us/library/aa174903(SQL.80).aspx

Una cosa a tener en cuenta es que una vez que haya configurado su entorno SQL Server con una cierta intercalación, NO PUEDE cambiarlo sin crear una nueva instancia de SQL Server. Entonces, Insensible a las mayúsculas y minúsculas suele ser el camino a seguir. Y luego esfuércese por tener coherencia en sus consultas.

Una vez que se establece una intercalación, se aplica tanto a los datos como a los metadatos, creo.


La intercalación predeterminada de la base de datos determina si los objetos dentro de la base de datos se tratan de manera que distinga entre mayúsculas y minúsculas en las consultas; esto se aplica a todos los nombres de los objetos: tablas, columnas, etc.

Si el código de la aplicación proviene de una base de datos de intercalación insensible a mayúsculas y minúsculas, es posible que no se ejecute en una base de datos de intercalaciones que distinga entre mayúsculas y minúsculas si un objeto está mal referenciado (recibiría un mensaje cuando intentara ejecutar la sentencia o crear el procedimiento almacenado, o una arquitectura de procuración almacenada, podría detectar todo esto bastante rápido a menos que tenga una cantidad significativa de SQL dinámico).

Recuerde que incluso si su código se ejecuta, las columnas individuales se pueden configurar con colaciones que difieren de la base de datos, por lo que siempre es posible que con una intercalación diferente, su código se comporte de forma inesperada (por ejemplo, GROUP BY se comporta de forma diferente).


La intercalación se establece en versiones anteriores de SQL Server, pero en 2005 y más adelante, puede cambiarla por objeto a medida que se crean.


Puede establecer la intercalación para cada objeto y establecer un valor predeterminado para la base de datos y el servidor también.

¿Como lidiar con? Necesitas hacer cumplir las normas aquí. Puede enredarse fácilmente con diferentes personas escribiendo con diferentes casos.

La intercalación también se aplica a los datos, por lo que "bob"! = "Bob"