Firebird21

Por favor ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Búsqueda Avanzada  

Noticias:

Nuevo Post: "Evitando que el tamaño de la Base de Datos se incremente demasiado" checalo en Firebird21.wordpress.com

Páginas: [1] 2 3 ... 10
 1 
 en: Hoy a las 12:01:54 pm 
Iniciado por amurrieta - Último mensaje por amurrieta
Buena tarde, buscando en la página de firebird para verificar si estaba documentado el error, encontré esto:

Citar
If you get any error message stating something like Parsing Error, it is probably not the error returned by Firebird, but rather the admininstration tool you're using. Some of the tools (like IBExpert or EMS) try to be smart and parse your statements before they even get to Firebird. However, they do it incorrectly some of the time, as the parsers are not generic and often choke on new Firebird features. So, make sure you use some tool with generic parser (isql or FlameRobin) before reporting bugs to Firebird team. And always use the latest available version of your tool as the bug is probably already detected by other users and fixed.

Ubico que efectivamente es el manejador, en este caso el EMS, ya que como lo comentó Walter hice la instalación del Firebird 2.5 y continuaba con el mismo error.

Viendo en foro del EMS no pude bajar una versión posterior a la que tengo 3.8.5.1, tuve que bajar la última versión y pues si efectivamente no tuve problema al crear los procedimientos, peeero ahora me marca un error al ejecutar el procedimiento directamente (Execute) al parecer no reconoce una setencia sql ejecutada con
Citar
EXECUTE STATEMENT lcQuery INTO :lcresultado;
, sin embargo si ejecuto este mismo procedimiento desde el modo debugger no ocurre ningún error.

El error que envía el EMS es:

"Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 1, column 680.
).

SQL Code: -104
IB Error Number: 335544569"

¿alguna idea de qué probar?

Gracias



 2 
 en: Mayo 23, 2018, 12:55:04 pm 
Iniciado por amurrieta - Último mensaje por amurrieta
Gracias por responder Walter, voy a probar con lo que me comentas.

Sabes si hay otro "manejador" de base de datos aparte del EMS que pueda utilizar para crear procedimientos y administrar base de datos?

Buen día


 3 
 en: Mayo 23, 2018, 12:43:40 pm 
Iniciado por juanki - Último mensaje por juanki
Hola

Muchas gracias por la respuesta, voy a tomar el consejo y empezaré a hacer las cosas así. Nombras las vista y ¡¡ tampoco las uso !!

Estoy usando las librerías Qt, que ya traen una serie de clases para conectarse y manipular datos de las bases de datos y con "cuatro líneas" tienes todo hecho, pero claro, el programa depende por completo de Qt, si por el motivo que sea debo migrar a otro lenguaje/frameworks tengo que rehacer todo todo, voy a empezar a separar y dejar en la base de datos lo que es de la base de datos.

Un saludo

 4 
 en: Mayo 23, 2018, 01:49:07 am 
Iniciado por juanki - Último mensaje por Walter
Hola

Son cosas distintas, aunque están muy relacionadas, y por ese motivo se presta mucho a confusión.

Los usuarios de tu aplicación y los usuarios de tu Base de Datos no necesariamente son los mismos.

Por ejemplo, podrías tener a un Administrador de Bases de Datos que nunca usa tu aplicación sino que se dedica a hacer/restaurar backups, hacer sweeps, etc.

No importa que derechos le des a un usuario dentro de tu aplicación, para el Firebird lo único que importa son los derechos que ese usuario tiene dentro de la Base de Datos. Por ejemplo, si tu aplicación le permite consultar los precios de los productos y en tu Base de Datos no tiene ese derecho, pues no podrá consultar. Y punto.

Tener una tabla de USUARIOS es útil en muchas ocasiones, ya que no solamente puedes colocar allí las opciones que los usuarios tienen disponibles sino también personalizar tu aplicación: cada usuario puede elegir una imagen de fondo, color del texto, etc.

Pero lo recomendable es no otorgar derechos a los usuarios individualmente, sino a los roles. Es mucho más fácil y más cómodo controlar roles que controlar usuarios. Mi política por lo tanto es: a los usuarios ningún derecho, los derechos solamente a los roles, y a los usuarios se les asigna uno (o a veces, más de uno) de esos roles.

Y ya que estamos hablando de derechos, lo recomendable es nunca otorgar derechos sobre las tablas, los derechos solamente deben otorgarse a las vistas y a los stored procedures. Eso disminuye muchísimo la probabilidad de que algún descerebrado "meta la pata" y cause daño a la Base de Datos.

Por otro lado, si tienes una tabla de USUARIOS eso te obligará a trabajar más, porque debes mantenerla sincronizada. Por ejemplo, si el rol R_AUXILIAR_CONTABLE no poseía el derecho de ver las ventas realizadas y ahora quieres otorgarle ese derecho, esa tarea debes hacerla dentro de tu Base de Datos, pero además deberás cambiar acordemente tu tabla de USUARIOS. Doble trabajo. Nada del otro mundo, nada difícil de hacer, nada complicado, pero ... doble trabajo.

Y evidentemente que si no haces el doble trabajo, habrá un desfasaje.

Saludos.

Walter.


 5 
 en: Mayo 23, 2018, 01:19:40 am 
Iniciado por amurrieta - Último mensaje por Walter
Quizás el problema sea tu versión del Firebird. ¿por qué no instalas la versión 2.5.8 y verificas si el mismo error sigue ocurriendo?

Saludos.

Walter.

 6 
 en: Mayo 23, 2018, 12:26:13 am 
Iniciado por amurrieta - Último mensaje por amurrieta
Buena noche Foro, tengo este problema al realizar algunas sentencias para crear procedimientos, estoy trabajando con Firebird 2.1, y algunas funciones se ejecutan bien en editor de sql pero al pasar ese query ya no se ejecutan o no las reconoce el "precompilador" del EMS Ver. 3.8.5. (estoy ocupando este editor de base de datos)

Quiero hacer unas tablas agregadas como las que Walter puso de ejemplos pero en procedimiento no me acepta la función Left() mientras que si la ejecuto en editor de SQL si la ejecuta, el error que pone es

"Precompiler Error: parsing error"

Lo hace para varios casos, ¿qué puedo hacer? quiero evitar realizar estos querys dinámicos desde la aplicación, solo quiero invocar los procedimientos y que todo el trabajo de las consultas y actualizaciones se hagan directamente en la base de datos.

Alguna idea si es configuración del EMS o si se requiere especificar algo en el Firebird? si es cosa del EMS qué otro programa se puede  utilizar para administrar y editar procedimientos de firebird?

Agradezco su apoyo.

 7 
 en: Mayo 06, 2018, 04:56:57 pm 
Iniciado por juanki - Último mensaje por juanki
Hola

Tengo mi pequeño sistema medio funcionando, estaba leyendo sobre los usuarios de la base de datos y me topé con este post:
http://yoforeo.com/firebird21/index.php?topic=1448.msg5086#msg5086

Actualmente tengo una tabla usuarios en la que guardo el ID, Nombre, Contraseña y Privilegios. Estos pueden ser solo dos: Administrador o Usuario.

Cuando inicia la aplicación, muestro un formulario en el que pido el usuario y contraseña y si corresponden con algún usuario de esa tabla y son correctos los datos, pues accede a la aplicación. El usuario normal hay cosas que no puede hacer, lo que hago es desactivar las opciones correspondientes de los menús de la aplicación, así no puede usar lo que no debe.

Pero no tiene ninguna restricción en la base de datos, vamos, no creo ningún usuario en la base de datos, y viendo el mensaje que puse antes, me surgió la duda.

Entiendo entonces que debería crear un par de roles, cada uno con sus permisos, y crear tantos usuarios en la base de datos como de de alta en la aplicación. Entonces ¿ya no sería necesaria mi tabla de usuarios? O sí, por que aunque el usuario normal no tenga permisos en la base de datos, tendré que seguir desactivando las opciones que no puede usar, ya que si no, saltaría un error al tratar de usarlas ¿no?

A ver si me acaráis cual sería el proceso correcto a seguir.

Un saludo

 8 
 en: Mayo 04, 2018, 11:58:32 am 
Iniciado por Oz Fox - Último mensaje por Oz Fox
Buenas. Alguno ha instalado y esta usando el Firebird 3.0.3

Pregunto porque deseo saber cual es el comportamiento del Firebird 3.0.3 cuando desde el SYSDBA se crea un usuario, por ejemplo, USPRUEBA y a este se le otorga el privilegio/permiso para crear, registrar base de datos y tablas; si puede consultar, modificar, eliminar algo así como el SYSDBA.


 9 
 en: Abril 29, 2018, 08:24:09 am 
Iniciado por Oz Fox - Último mensaje por Oz Fox
lo que si me parece raro en tantas pruebas e intentos que he realizado, he notado lo siguiente:

cuando selecciono la opcion de Crear Base de Datos con el usuario SYSDBA la crea y la registra sin problema; pero si uso el usuario FIREBIRD (este usuario es de ejemplo, el usuario es otro) no me permite ni crearla ni mucho menos registrarla.

espero sus valiosas ayuda para solventar este inconveniente; gracias.



nota: siguiendo los cosejos de Walter.  SYSDBA no se dedica a insertar, borrar, modificar o consultar datos, eso deberán hacerlo los demás usuarios que en este caso es FIREBIRD.  SYSDBA solamente realiza tareas administrativas que los demás usuarios no pueden hacer (backup, restauraciones, etc.).

 10 
 en: Abril 25, 2018, 09:24:17 pm 
Iniciado por Oz Fox - Último mensaje por Oz Fox
Compañero, esta BD viene de la version Firebird 2.5.5 y le hice el Backup, instalamos la version 3.0.3 y le realice el Restore sin mostrar ningun mensaje de error, ahora al registrar la BD o al tratde crear una BD nueva, me aparece ese mensaje.

Páginas: [1] 2 3 ... 10

Enlaces

Blog de Firebird21 WebMaster