Problema con fechas y cambio de servidor

30/05/2007 - 00:07 por JC | Informe spam
Hola, debo pasar una base de datos de un servidor SQL Server 2000 versión en
inglés a uno versión en español. Hice el attach de la BD en el servidor en
español sin ningún problema. El programa que utiliza la base de datos hace
los INSERTS y los UPDATES de las fechas en formato ISO ('yyyymmdd'). La
configuración regional de ambos servidores es la misma (en español) y el
formato de fecha especificado es el mismo para ambos. El problema que se me
presenta es cuando trato de insertar un registro con fecha, me da el error:
"la conversión de Char a SmallDatetime dio con resultado un valor fuera de
rango" es decir, está cambiando el formato de la fecha de dd/mm/yyyy a
mm/dd/yyyy al momento de hacer el insert.

Hay que hacer algún ajuste en el servidor para que este pueda guardar las
fechas como debe ser?

Gracias por la ayuda.
JC

Preguntas similare

Leer las respuestas

#6 JC
30/05/2007 - 04:21 | Informe spam
El Collation del servidor en inglés es Traditional_Spanish_CI_AS y el
Collation del servidor en español es la Modern_Spanish.
Alguna sugerencia para arreglar esto?
Gracias, JC


"JCASTIBLANCO" escribió en el
mensaje news:

Hola, yo creo que la solución de Franciz es válida siempre y cuando no
tengas que modificar en muchos puntos a la App, que estás utilizando para
poblar la base de datos. Pienso que el problema se generó con el
collation
settings que escogiste al momento de instalar la instacia de la base de
datos. Revisa cual tienes por defecto en la base antigua y en la base
nueva.
En la antigua debes tener una de tipo Latin1_General . y en la nueva un
Modern_Spanish. Para ver más de esto puedes consultar los siguientes
links:
http://msdn2.microsoft.com/en-us/li...43508.aspx
http://msdn2.microsoft.com/en-us/li...43726.aspx
http://msdn2.microsoft.com/en-us/li...43515.aspx

"JC" wrote:

Hola, debo pasar una base de datos de un servidor SQL Server 2000 versión
en
inglés a uno versión en español. Hice el attach de la BD en el servidor
en
español sin ningún problema. El programa que utiliza la base de datos
hace
los INSERTS y los UPDATES de las fechas en formato ISO ('yyyymmdd'). La
configuración regional de ambos servidores es la misma (en español) y el
formato de fecha especificado es el mismo para ambos. El problema que se
me
presenta es cuando trato de insertar un registro con fecha, me da el
error:
"la conversión de Char a SmallDatetime dio con resultado un valor fuera
de
rango" es decir, está cambiando el formato de la fecha de dd/mm/yyyy a
mm/dd/yyyy al momento de hacer el insert.

Hay que hacer algún ajuste en el servidor para que este pueda guardar las
fechas como debe ser?

Gracias por la ayuda.
JC



Respuesta Responder a este mensaje
#7 JCASTIBLANCO
30/05/2007 - 04:46 | Informe spam
Pues lamentablemente no hay forma de cambiar el collation settings de la
instacia, podrías crear una nueva instancia con la configuración de la
original.

"JC" wrote:

El Collation del servidor en inglés es Traditional_Spanish_CI_AS y el
Collation del servidor en español es la Modern_Spanish.
Alguna sugerencia para arreglar esto?
Gracias, JC


"JCASTIBLANCO" escribió en el
mensaje news:
>
> Hola, yo creo que la solución de Franciz es válida siempre y cuando no
> tengas que modificar en muchos puntos a la App, que estás utilizando para
> poblar la base de datos. Pienso que el problema se generó con el
> collation
> settings que escogiste al momento de instalar la instacia de la base de
> datos. Revisa cual tienes por defecto en la base antigua y en la base
> nueva.
> En la antigua debes tener una de tipo Latin1_General . y en la nueva un
> Modern_Spanish. Para ver más de esto puedes consultar los siguientes
> links:
> http://msdn2.microsoft.com/en-us/li...43508.aspx
> http://msdn2.microsoft.com/en-us/li...43726.aspx
> http://msdn2.microsoft.com/en-us/li...43515.aspx
>
> "JC" wrote:
>
>> Hola, debo pasar una base de datos de un servidor SQL Server 2000 versión
>> en
>> inglés a uno versión en español. Hice el attach de la BD en el servidor
>> en
>> español sin ningún problema. El programa que utiliza la base de datos
>> hace
>> los INSERTS y los UPDATES de las fechas en formato ISO ('yyyymmdd'). La
>> configuración regional de ambos servidores es la misma (en español) y el
>> formato de fecha especificado es el mismo para ambos. El problema que se
>> me
>> presenta es cuando trato de insertar un registro con fecha, me da el
>> error:
>> "la conversión de Char a SmallDatetime dio con resultado un valor fuera
>> de
>> rango" es decir, está cambiando el formato de la fecha de dd/mm/yyyy a
>> mm/dd/yyyy al momento de hacer el insert.
>>
>> Hay que hacer algún ajuste en el servidor para que este pueda guardar las
>> fechas como debe ser?
>>
>> Gracias por la ayuda.
>> JC
>>
>>
>>



Respuesta Responder a este mensaje
#8 JC
30/05/2007 - 04:57 | Informe spam
Ok, voy a probar esa opción. Espero que esta sea la solución.
Gracias por tu ayuda.
JC

"JCASTIBLANCO" escribió en el
mensaje news:
Pues lamentablemente no hay forma de cambiar el collation settings de la
instacia, podrías crear una nueva instancia con la configuración de la
original.

"JC" wrote:

El Collation del servidor en inglés es Traditional_Spanish_CI_AS y el
Collation del servidor en español es la Modern_Spanish.
Alguna sugerencia para arreglar esto?
Gracias, JC


"JCASTIBLANCO" escribió en el
mensaje news:
>
> Hola, yo creo que la solución de Franciz es válida siempre y cuando no
> tengas que modificar en muchos puntos a la App, que estás utilizando
> para
> poblar la base de datos. Pienso que el problema se generó con el
> collation
> settings que escogiste al momento de instalar la instacia de la base de
> datos. Revisa cual tienes por defecto en la base antigua y en la base
> nueva.
> En la antigua debes tener una de tipo Latin1_General . y en la nueva un
> Modern_Spanish. Para ver más de esto puedes consultar los siguientes
> links:
> http://msdn2.microsoft.com/en-us/li...43508.aspx
> http://msdn2.microsoft.com/en-us/li...43726.aspx
> http://msdn2.microsoft.com/en-us/li...43515.aspx
>
> "JC" wrote:
>
>> Hola, debo pasar una base de datos de un servidor SQL Server 2000
>> versión
>> en
>> inglés a uno versión en español. Hice el attach de la BD en el
>> servidor
>> en
>> español sin ningún problema. El programa que utiliza la base de datos
>> hace
>> los INSERTS y los UPDATES de las fechas en formato ISO ('yyyymmdd').
>> La
>> configuración regional de ambos servidores es la misma (en español) y
>> el
>> formato de fecha especificado es el mismo para ambos. El problema que
>> se
>> me
>> presenta es cuando trato de insertar un registro con fecha, me da el
>> error:
>> "la conversión de Char a SmallDatetime dio con resultado un valor
>> fuera
>> de
>> rango" es decir, está cambiando el formato de la fecha de dd/mm/yyyy a
>> mm/dd/yyyy al momento de hacer el insert.
>>
>> Hay que hacer algún ajuste en el servidor para que este pueda guardar
>> las
>> fechas como debe ser?
>>
>> Gracias por la ayuda.
>> JC
>>
>>
>>



Respuesta Responder a este mensaje
#9 Jesús López
30/05/2007 - 11:20 | Informe spam
Es que el formato ISO no es YYYY-MM-DD sino YYYYMMDD

Si pruebas esto verás como no da error:


SET LANGUAGE SPANISH
INSERT INTO Empleados (fecha) Values('20070529')


SET LANGUAGE ENGLISH
INSERT INTO Empleados (fecha) Values('20070529')



"JC" escribió en el mensaje
news:
Ese no es el problema, las fechas ya están en formato ISO (YYYY-MM-DD), el
problema es que el idioma es diferente en cada servidor. Uno está en
inglés (originalmente) y el otro en español (donde debo pasar la BD).

Si pruebas lo siguiente en el Analizador de consultas, verás que ocurre:

SET LANGUAGE SPANISH
INSERT INTO Empleados (fecha) Values('2007-05-29')

*** Sql Server genera el error ***
Parece que cuando el SQL Server está instalado en español
no acepta el formato de fecha anterior y se produce el error.

Ahora, si pruebas lo siguiente:

SET LANGUAGE ENGLISH
INSERT INTO Empleados (fecha) Values('2007-05-29')

*** NO se produce el error ***

Cualquier idea o sugerencia, es bienvenida.

Gracias, JC.



"Francizk0" escribió en el mensaje
news:
porq no utlizas un Convert

CONVERT(CHAR(10),Campo_Fecha,103)

el formato 103 transforma a DD/MM/YYYY no importamndo como hay sido
grabado
a pero claro q todos los campos fechas deben estar grabados en el
mismo formato u orden ( YYYY-MM-DD ) ,

lo que te recomiendo es q primero revivises q las fechas todas esten
bien grabadas osea en un mismo orden






Respuesta Responder a este mensaje
#10 Maxi
30/05/2007 - 14:45 | Informe spam
jc, estas seguro que estas pasando en ANSI ojo que el ANSI es YYYYMMDD
hh:mm:ss sin guiones ni nada


Salu2

Microsoft MVP SQL Server
Culminis Speaker

"JC" escribió en el mensaje
news:%
Hola, debo pasar una base de datos de un servidor SQL Server 2000 versión
en inglés a uno versión en español. Hice el attach de la BD en el servidor
en español sin ningún problema. El programa que utiliza la base de datos
hace los INSERTS y los UPDATES de las fechas en formato ISO ('yyyymmdd').
La configuración regional de ambos servidores es la misma (en español) y
el formato de fecha especificado es el mismo para ambos. El problema que
se me presenta es cuando trato de insertar un registro con fecha, me da el
error:
"la conversión de Char a SmallDatetime dio con resultado un valor fuera de
rango" es decir, está cambiando el formato de la fecha de dd/mm/yyyy a
mm/dd/yyyy al momento de hacer el insert.

Hay que hacer algún ajuste en el servidor para que este pueda guardar las
fechas como debe ser?

Gracias por la ayuda.
JC

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida