¿La clasificación de sqlserver significa que los nombres de columna deben ser el caso correcto? ¿Y cómo lidiar con eso?

StackOverflow https://stackoverflow.com/questions/496628

Pregunta

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

¿Presumiblemente esto rompería una aplicación si sus procesos y consultas almacenados no se escribieran con mayúsculas y minúsculas? ¿Hay alguna manera de lidiar con esto sin tener que garantizar que todas las consultas usen el caso correcto, como establecer la recopilació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 tenga un código sql en inconsistencias, y quiero poder ejecutarlo contra bases de datos con diferentes intercalaciones. ¿Qué configuración necesitaría o con qué conjunto de intercalaciones de base de datos / servidor no podría usar la aplicación?

¿Fue útil?

Solución

La clasificación es lo que determina si sus consultas no distinguen entre 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 distingan entre mayúsculas y minúsculas. Si sus consultas no son consistentes, entonces su intercalación DEBE ser insensible a mayúsculas y minúsculas, de lo contrario no funcionará.

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

Una cosa a tener en cuenta es que una vez que haya configurado su entorno de SQL Server con una determinada clasificación, NO PUEDE cambiarlo sin crear una NUEVA instancia de SQL Server. Por lo tanto, las mayúsculas y minúsculas suelen ser el camino a seguir. Y luego trate de tener consistencia en sus consultas.

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

Otros consejos

La clasificación se establece en versiones anteriores de SQL Server, pero en 2005 y posteriores, puede cambiarla por objeto, a medida que se crean.

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

Si el código de su aplicación proviene de una base de datos de clasificación que no distingue entre mayúsculas y minúsculas, es posible que no se ejecute en una base de datos de clasificación que distinga entre mayúsculas y minúsculas si un objeto tiene una referencia incorrecta (recibirá un mensaje cuando intente ejecutar la declaración o cree el procedimiento almacenado , o en una arquitectura de proceso almacenado, capturaría todo esto bastante rápido a menos que tuviera una cantidad significativa de SQL dinámico).

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

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

¿Cómo lidiar con eso? Necesita hacer cumplir las normas aquí. Puedes enredarte fácilmente con diferentes personas que escriben con mayúsculas y minúsculas.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top