PDA

Ver la Versión Completa : problemas con firebird 1.5


STONECOLD
31-10-2007, 20:04:59
he instalado firebird 1.5 en un servidor nuevo que tiene windows 2003 server r2 y un programa que tengo que cumple multimes funciones de nomina y recursos humanos ahora no corre bien leyendo la base de datos cuando la llevo a ese servidor, algunos selects explotan, dan error, bueno, hemos recurrido a instalar firebird 2.0 pero tenemos el problema de que algunas udf's me estan dando problemas, eso implicaria reestructurar todo el programa y la base de datos para poder hacer que eso funcione bien, y la verdad esmucho trabajo, hay alguna forma de instalar el firebird 1.5 en ese servidor y que funcione correctamente, alguien podria ayudarme

jhonny
31-10-2007, 20:12:06
Deberia funcionarte correctmente pero ¿Que quieres decir cuando dices que "las consultas explotan"?, ¿muestra algun error, No arroja resultados...?, si es el caso de que muestra algun error ¿Podrias colocarnos el ejemplo de uno de dichos errores por lo menos, con todo y consulta?

STONECOLD
31-10-2007, 20:26:52
select tarjeta, nomina, count(*)
from snmempl
where status = 'A'
group by tarjeta, nomina
having count(*) > 1
ese es el select que me da error, y el error es que no encuentra la columna status, pero si esta en la tabla, lo extrano es que en la base de datos original en el servidor de windows nt 4.0 corre peferctamente es en este que me da error

jhonny
31-10-2007, 20:35:22
Pues deberia funcionarte, revisa bien la tabla snmempl que tienes montada en la BD del nuevo servidor, ¿Estas 100% seguro de que dicho campo si existe?, uso ese tipo de consultas en varias ocaciones y nunca me sucede tal cosa.

Lo mas parecido es que cuando la BD esta en Dialecto 3 y hago algo asi:


select s.tarjeta, s.nomina, count(*)
from snmempl s
where status = 'A'
group by s.tarjeta, s.nomina
having count(*) > 1


Me mostraria el error que mencionas, entonces tendria que agregar el alias a status, asi:


select s.tarjeta, s.nomina, count(*)
from snmempl s
where s.status = 'A'
group by s.tarjeta, s.nomina
having count(*) > 1

STONECOLD
31-10-2007, 20:50:11
ante este problema recurri a instalar firbird 2.0 en el servidor y cambie mis componentes a los nuevos ibo, y funcionan bien, pero los selects hay que reestructurarlos, pues dan error, es un lio, pero se haria no problema soloque tengo un grupo de udf's creadas por mi y cargadas a la base de datos, resulta que algunos views hacen mencion de esos udf's y el dice que no estan definidas, pero uso el ems(enterprise manager sql for firebird and interbase) y veo las funciones ahi, estan en la base de datos declaradas, pero por alguna razon sigue diciendome que no estan defiinidas

jhonny
31-10-2007, 20:54:20
Bueno, en cuanto al problema de que en FB1.5 no te funcionan los selects, creeme que me parece muy extraño, personalemnete tuve que migrar una BD de FB1.0 a FB1.5, y luego de FB1.5 a FB2.0.1 y luego a FB2.0.3 y nunca he tenido ese tipo de problemas, que extraño...

En cuanto a lo de las UDFs, pues seguramente no esta la DLL en el direcotorio UDF de Firebird o puede que tengas una ruta definida en el archivo FireBird.conf, mas exactamente en el valor #UdfAccess = Restrict UDF ;)

STONECOLD
31-10-2007, 20:59:55
el dll esta en el directorio program files/firebird/firebird 2.0/udf pero probare lo de los config, lo cierto es que esos udf los cargue en otra base de datos y funcionan, en esta es que dicen no estar definidas, y eso me esta volvidno loco

jhonny
31-10-2007, 21:02:30
el dll esta en el directorio program files/firebird/firebird 2.0/udf pero probare lo de los config, lo cierto es que esos udf los cargue en otra base de datos y funcionan, en esta es que dicen no estar definidas, y eso me esta volvidno loco

Entonces, prueba los del firebird.conf y nos comentas ;).

STONECOLD
31-10-2007, 21:06:17
esa parte tiene un # denotando que es un comentario o sea que no tienen nada escrito al respecto, que debo hacer, ponerle la ruta especifica donde esta el dll para que pueda encontralas?

jhonny
31-10-2007, 21:12:57
esa parte tiene un # denotando que es un comentario o sea que no tienen nada escrito al respecto, que debo hacer, ponerle la ruta especifica donde esta el dll para que pueda encontralas?

Colocale la ruta de donde tienes tus UDFs y quitale la #, de todas formas mira el siguiente comentario:


En archivo firebird.conf hay un valor que yo no conocia es el OldColumnNaming, la descripción de dicho valor es la siguiente:

# Prior to Firebird 1.5 various SELECT expressions generated unnamed
# columns. This did not conform to the SQL standard. Fb 1.5 saw the
# introduction of default aliases for these unnamed columns. In some
# cases, particularly if string concatenation is used (via the ||
# operator) this breaks existing scripts.
#
# This setting will affect aliases generated via CONCATENATION,
# CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP and EXTRACT. Setting
# the value to true will disable the alias generation. It is only
# recommended to be used where legacy scripts need to be supported.
# It will be marked deprecated in Firebird 2.0 and removed in
# Firebird 3.0.
#
# Type: boolean


De manera pues que si quitas el signo numeral (#) a ese valor llamado OldColumnNaming y le pones como valor 1, puede que te funcionen las consultas de tu FB1.5, de todas formas debes tener en cuenta que dicha caracteristica esta allí solo para tener compatibilidad con versiones anteriores y que ha sido marcada como deprecated, según entiendo en FB3.0 sera eliminada ;).

jhonny
31-10-2007, 21:37:21
Bueno según toda esa cosa que leí en dicho archivo tu consulta inicial deberia ser, asi:

select s.tarjeta, s.nomina, count(*) Conteo
from snmempl s
where s.status = 'A'
group by s.tarjeta, s.nomina
having count(*) > 1

Según mi mal ingles el problema esta en que no estas asignando un Alias a la función Count que tienes en dicha consulta, ya que ese es el Standar SQL ;).

STONECOLD
31-10-2007, 21:38:00
no funciona tampoco, aparentemente mi problema es algo profundo, ya no se que hacer, hice ambas cosas que me dijiste, y nada parece funcionar

jhonny
31-10-2007, 21:40:36
no funciona tampoco, aparentemente mi problema es algo profundo, ya no se que hacer, hice ambas cosas que me dijiste, y nada parece funcionar

¿Ya probaste la que te comente en el mensaje 11 de este mismo hilo, sobre el Standar SQL?

STONECOLD
31-10-2007, 21:51:48
lo intente con el 1.5 y no funciono, ahora quiero que todo trabaje en 2.0 para no hacer mas cambios por ahora, la vaina es que las funciones siguen dando problemas sigue diciendo estan indefinidas

jhonny
31-10-2007, 22:01:29
lo intente con el 1.5 y no funciono, ahora quiero que todo trabaje en 2.0 para no hacer mas cambios por ahora, la vaina es que las funciones siguen dando problemas sigue diciendo estan indefinidas

A bueno, cuando uno migra de una versión a otra es recomendable hacer un Backup/Retore de la BD con el nuevo motor para que el ODS tome los cambios de la nueva versión ¿Ya lo hiciste?, si no hazlo y nos cuentas :).

jhonny
31-10-2007, 22:30:21
Otra cosa, verifica que tienes permiso de lectura sobre dichas UDFs.

STONECOLD
31-10-2007, 23:05:52
fijate, el backup and restore esta hecho pero sigue dando problemas con los udf's igual, no parece tenere solucion aparente esto

jhonny
31-10-2007, 23:11:07
fijate, el backup and restore esta hecho pero sigue dando problemas con los udf's igual, no parece tenere solucion aparente esto

Bueno, pues esto debe tener una explicación yo tambien uso una que otra UDF en un servidor Windows 2000 y no me han puesto problema.

¿Miraste lo de los permisos?