Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-06-2012
Avatar de Luis M.
[Luis M.] Luis M. is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Ripollet - Barcelona
Posts: 212
Poder: 20
Luis M. Va por buen camino
Script para actualizar DB en Firebird

Hola.
Estoy haciendo pruebas para actualizar una base de datos en Firebird 2.5
Utilizo D2007 y MDO
En un MDOScript pongo lo siguiente:


Código Delphi [-]
/* Server version: WI-V6.3.1.26351 Firebird 2.5 
   SQLDialect: 3. ODS: 11.2. Forced writes: On. Sweep inteval: 20000.
   Page size: 4096. Cache pages: 2048 (8192 Kb). Read-only: False. */
SET NAMES ISO8859_1;

SET SQL DIALECT 3;

CONNECT 'Mibase.FDB' USER 'SYSDBA' PASSWORD 'masterkey';

SET AUTODDL ON;

/* Create Domains... */
CREATE DOMAIN PRUEBAS AS VARCHAR(10) COLLATE ES_ES_CI_AI;

/* Create Table... */
CREATE TABLE PRUEBAS(USUARIO USUARIO,
CODIGO PRUEBAS NOT NULL,
FAMILIA FAMILIAS);



/* Create Procedure... */
SET TERM ^ ;

CREATE PROCEDURE ULTIMA_PRUEBA(USUARIO USUARIO)
 RETURNS(ULTIMA VARCHAR(10))
 AS
 BEGIN SUSPEND; END
^


/* Create Primary Key... */
SET TERM ; ^

ALTER TABLE PRUEBAS ADD CONSTRAINT PK_PRUEBAS PRIMARY KEY (USUARIO, CODIGO);

/* Create Foreign Key... */
RECONNECT;

ALTER TABLE PRUEBAS ADD CONSTRAINT FK_PRUEBAS_1 FOREIGN KEY (USUARIO) REFERENCES USUARIOS (CODIGO) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE PRUEBAS ADD CONSTRAINT FK_PRUEBAS_2 FOREIGN KEY (USUARIO, FAMILIA) REFERENCES FAMILIAS (USUARIO, FAMILIA) ON UPDATE CASCADE;

/* Alter Procedure... */
/* Restore proc. body: ULTIMA_PRUEBA */
SET TERM ^ ;

ALTER PROCEDURE ULTIMA_PRUEBA(USUARIO USUARIO)
 RETURNS(ULTIMA VARCHAR(10))
 AS
begin
  /* Procedure Text */
  select max(codigo) from pruebas where usuario = :usuario into :ultima;
  suspend;
end
^

/* Alter Procedure... */
SET TERM ; ^

Y lo llamo con MDOScript.ExecuteScript;

El problema es que me sale la ventana para que introduzca el usuario y password.
El usuario pone por defecto SYSDBA y me pide el password.
Si introduzco el password, me funciona perfectamente el Script pero para un sistema de actualización
no creo que sea lo más apropiado.
Como impido que me salga la ventana de usuario y se ejecute el Scrip sin problemas?

Un saludo.
Responder Con Cita
  #2  
Antiguo 18-06-2012
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Por dar una idea, porque en realidad no me consta que exista en el lenguaje de guiones:LoginPrompt=False, pienso que investigando por este lado pueda salir algo positivo.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 18-06-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Te debe de salir un error en el script, ya que no conocterá a la BD. Te falta la palabra "database'

Código SQL [-]
CONNECT 'Mibase.FDB' USER 'SYSDBA' PASSWORD 'masterkey';  /* mal */
Código SQL [-]
connect database 'mibase.fdb' user 'SYSDBA' password 'masterkey';  /* bien */
Responder Con Cita
  #4  
Antiguo 18-06-2012
Avatar de Luis M.
[Luis M.] Luis M. is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Ripollet - Barcelona
Posts: 212
Poder: 20
Luis M. Va por buen camino
Gracias a los dos por responder.

Después de varias pruebas y opciones, el resultado siempre era el mismo.
Así que opte por cambiar el componente MDOScript por el IBScript y ahora funciona
a la perfección.
Debería de ser cosa del componente.

Cita:
Empezado por Casimiro Notevi Ver Mensaje
Te debe de salir un error en el script, ya que no conocterá a la BD. Te falta la palabra "database'

Código SQL [-]
CONNECT 'Mibase.FDB' USER 'SYSDBA' PASSWORD 'masterkey';  /* mal */
Código SQL [-]
connect database 'mibase.fdb' user 'SYSDBA' password 'masterkey';  /* bien */
Casimiro, no me daba ningún error, solo me salia la ventana del login.
El Script estaba echo con database comparer.
Hice otro Script con IBExpert y el resultado era el mismo.
En los dos casos el Script eran iguales exceptuando que el IBExpert añade al final los privilegios.
Funciona igualmente sin el "Database".
Este es el Script echo con IBExpert:

Código Delphi [-]
/* Server version: WI-V6.3.1.26351 Firebird 2.5 
   SQLDialect: 3. ODS: 11.2. Forced writes: On. Sweep inteval: 20000.
   Page size: 4096. Cache pages: 2048 (8192 Kb). Read-only: False. */

SET NAMES ISO8859_1;

SET SQL DIALECT 3;

CONNECT 'Mibase.FDB' USER 'SYSDBA' PASSWORD 'masterkey';

SET AUTODDL ON;

/* Create Domains... */
CREATE DOMAIN PRUEBAS AS VARCHAR(10) COLLATE ES_ES_CI_AI;

/* Create Table... */
CREATE TABLE PRUEBAS(USUARIO USUARIO,
CODIGO PRUEBAS NOT NULL,
FAMILIA FAMILIAS);



/* Create Procedure... */
SET TERM ^ ;

CREATE PROCEDURE ULTIMA_PRUEBA(USUARIO USUARIO)
 RETURNS(ULTIMA VARCHAR(10))
 AS
 BEGIN SUSPEND; END
^


/* Create Primary Key... */
SET TERM ; ^

ALTER TABLE PRUEBAS ADD CONSTRAINT PK_PRUEBAS PRIMARY KEY (USUARIO, CODIGO);

/* Create Foreign Key... */
RECONNECT;

ALTER TABLE PRUEBAS ADD CONSTRAINT FK_PRUEBAS_1 FOREIGN KEY (USUARIO) REFERENCES USUARIOS (CODIGO) ON UPDATE CASCADE ON DELETE CASCADE;

ALTER TABLE PRUEBAS ADD CONSTRAINT FK_PRUEBAS_2 FOREIGN KEY (USUARIO, FAMILIA) REFERENCES FAMILIAS (USUARIO, FAMILIA) ON UPDATE CASCADE;

/* Alter Procedure... */
/* Restore proc. body: ULTIMA_PRUEBA */
SET TERM ^ ;

ALTER PROCEDURE ULTIMA_PRUEBA(USUARIO USUARIO)
 RETURNS(ULTIMA VARCHAR(10))
 AS
begin
  /* Procedure Text */
  select max(codigo) from pruebas where usuario = :usuario into :ultima;
  suspend;
end
^

/* Alter Procedure... */
/* Create(Add) privilege */
SET TERM ; ^

GRANT ALL ON PRUEBAS TO SYSDBA WITH GRANT OPTION;

Un saludo y gracias por vuestra ayuda.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Script SQL para actualizar una base de datos Young Firebird e Interbase 13 08-07-2011 14:30:32
configurar transaccion en firebird para actualizar datos ingabraham Firebird e Interbase 2 22-06-2011 00:20:35
que pasos debo seguir para actualizar firebird 1.5 a 2.1 gmontes Firebird e Interbase 8 26-08-2010 01:05:17
Ejecutar script sql en firebird jlalvarez Firebird e Interbase 8 05-03-2008 01:25:42
Script de comandos para firebird djemix Firebird e Interbase 1 01-02-2007 14:31:57


La franja horaria es GMT +2. Ahora son las 07:33:26.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi