Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

SQL Server Collation y Transact-SQL

Estas en el tema de SQL Server Collation y Transact-SQL en el foro de SQL Server en Foros del Web. Hola, Yo se que me ignoran en este foro, pero les escribo igual porque no pierdo la fe y porque me sirve de terapia para ...
  #1 (permalink)  
Antiguo 10/07/2008, 12:09
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 7 meses
Puntos: 85
SQL Server Collation y Transact-SQL

Hola,

Yo se que me ignoran en este foro, pero les escribo igual porque no pierdo la fe y porque me sirve de terapia para contar mis problemas :)

Esto lo tengo probado en Sql Server 2000 SP3, SP4 (MSDE y Standard), Sql Server 2005 SP2 Express, por lo tanto no creo que sea un bug, diria que es por diseño.

Cuando se instala una instancia nueva de Sql Server, le indicamos el Server Collation, que sera el juego de caracteres que tendra la Master, Tempdb, Model, etc y por lo tanto el juego de caracteres por defecto de las demas bases de datos que se creen.

El escenario que me esta dando problemas es el siguiente, cuando el Server Collation es Case-Sensitive y creo una base de datos Case-Insensitive, me respeta la sensibilidad para los datos (en columnas varchar y demas) pero no me lo respeta para el codigo Transact-SQL, es decir, si las variables o parametros estan declarados en Mayusculas, despues no puedo referenciarlos en Minusculas.

Por ejemplo

Código:
create procedure p1
as
begin
declare @Variable int
set @Variable = 5
select @VariablE --E Mayuscula
end
Go

Msg 137, Level 15, State 2, Procedure p1, Line 7
Debe declarar la variable '@VariablE'.
¿Alguien sabe si es posible cortar con la herencia del Server Collation para Transact-SQL?

Saludos y gracias
  #2 (permalink)  
Antiguo 11/07/2008, 05:53
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 7 meses
Puntos: 85
Respuesta: SQL Server Collation y Transact-SQL

Hola,

He realizado las pruebas inversas, es decir, el Server Collation Case-Insensitive y la base de datos Case-Sensitive, en este caso, el codigo Transact-SQL queda Insensitive, por lo tanto, es valido decir que siempre respeta el valor de Server Collation.

Nota al margen, todavia no logro encontrar una nota en la MSDN que afirme este comportamiento.

Saludos
  #3 (permalink)  
Antiguo 14/07/2008, 04:34
Avatar de matanga  
Fecha de Ingreso: octubre-2007
Ubicación: España
Mensajes: 1.091
Antigüedad: 16 años, 7 meses
Puntos: 85
Respuesta: SQL Server Collation y Transact-SQL

Hola,

Finalmente di con la nota, una pequeña linea de documentacion "...The identifiers for variables, GOTO labels, temporary stored procedures, and temporary tables are in the default collation of the instance...".

http://msdn.microsoft.com/en-us/library/ms184391.aspx

Por lo tanto, es recomendable para los que desarrollen aplicaciones con Sql Server, que tengan configurada la instancia como Case-Sensitive para poder asegurar la portabilidad del codigo Transact-SQL

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:46.