¿Qué es la versión de ODS?

3 comentarios

ODS significa “On-disk structure” y es un número que se refiere a la estructura de la Base de Datos. Cuando nuevas características son agregadas al Firebird puede requerirse o no, que se incremente este número para que podamos saber si esa nueva característica está disponible.

Cuando intentas conectarte a una Base de Datos el Servidor del Firebird verifica que puedas hacerlo, mirando el número de ODS de la Base de Datos a la cual te quieres conectar.

Si el número de ODS es mayor que el número que corresponde a esa versión del Servidor, entonces no podrás conectarte.

Los números de ODS, según las versiones del Firebird son los siguientes:

 ODS   Versión del Firebird
10.0   Firebird 1.0
10.1   Firebird 1.5
11.0   Firebird 2.0
11.1   Firebird 2.1
11.2   Firebird 2.5

Por ejemplo, si la versión de tu Servidor es 2.1 entonces el ODS de esa versión es 11.1 y si quieres abrir una Base de Datos que fue creada con la versión 2.5 del Firebird no podrás hacerlo, porque las bases de datos creadas con la versión 2.5 tienen un ODS igual a 11.2 y el Servidor del Firebird solamente puede conectarse a las Bases de Datos que tienen un número de ODS igual o menor. Eso implica que la versión 2.1 del Firebird puede abrir solamente bases de datos cuyos números de ODS son iguales o menores que 11.1 pero nunca podrá abrir bases de datos cuyos números de ODS sean mayores que 11.1

Esta es la manera fácil y rápida que tiene el Servidor del Firebird para comprobar si puede abrir o no una Base de Datos.

¿Cómo se puede averiguar el número de ODS de una Base de Datos?

  1. Ubicándote en la sub-carpeta \BIN de la carpeta donde instalaste el Firebird
  2. Escribiendo el comando GSTAT.EXE con el parámetro -h y el nombre de tu Base de Datos

ODS1

(haciendo click en la imagen la verás más grande)

Si usas EMS SQL Manager puedes obtener esa información haciendo click con el botón derecho sobre el nombre de tu Base de Datos y luego eligiendo la opción “Database Properties…” como puedes ver a continuación:

ODS2

(haciendo click en la imagen la verás más grande)

 Y entonces verás algo similar a esto:

ODS3

(haciendo click en la imagen la verás más grande)

 Como el ODS de esta Base de Datos es 11.2 eso implica que fue creada por la versión 2.5 del Firebird o por una de sus subversiones (es decir, pudo haber sido creada por la versión 2.5, por la 2.5.1 ó por la 2.5.2, porque en todas ellas el ODS es 11.2)

¿Para qué sirve conocer el número de ODS?

Para saber si un backup que hiciste con una versión del Firebird puedes restaurarlo con otra versión del Firebird. Para que puedas conseguirlo, siempre el ODS del Servidor debe ser igual o mayor que el ODS de la Base de Datos.

Eso significa que es posible hacer el backup en la versión 2.1 y restaurarlo en la versión 2.5 pero lo contrario no está permitido.

Si tienes una Base de Datos que fue creada con una versión del Firebird y quieres usarla con una versión más nueva del Firebird lo correcto es hacer lo siguiente: el backup con la versión más antigua del Firebird y la restauración con la versión más reciente del Firebird. Así, te aseguras que todas las nuevas características estén disponibles en la Base de Datos después de haber sido restaurada.

 

Anuncios

Entendiendo a los scripts

2 comentarios

En SQL en general y en Firebird en particular podemos usar scripts.

¿Qué es un script?

Es un programa, o sea un conjunto de comandos, que se le da a un motor SQL para decirle lo que debe hacer y en que orden debe hacerlo.

¿Cómo se escribe un script?

Como un archivo de texto plano, o sea sin negritas, ni subrayados, nada de eso. Por ejemplo, puedes usar el Bloc de Notas para escribirlo. Por convención, la extensión de los archivos de script es .SQL pero puedes usar cualquier extensión que quieras o inclusive no usar extensión, es lo mismo. Sin embargo, para que te sea fácil entenderte con las demás personas es recomendable que uses la extensión .SQL

¿Qué se puede escribir en un archivo de script?

Cualquier comando que puedes escribir en tu motor SQL, por ejemplo puedes crear bases de datos, crear dominios, crear tablas, crear Primary Keys, crear índices, crear stored procedures, crear triggers, insertar filas, borrar filas, actualizar filas, etc.

También puedes escribir el comando COMMIT.

Aunque puedes tenerlos en un solo script, para evitarte problemas de integridad de los datos lo aconsejable es que escribas scripts separados para los comandos DDL (los que crean y modifican los objetos de la Base de Datos: CREATE, ALTER, DROP) y los comandos DML (los que manipulan a esos objetos: INSERT, UPDATE, DELETE, EXECUTE PROCEDURE, etc.)

Lo recomendable es que uses varios scripts, cada uno de ellos especializado en una tarea.

¿Para qué sirven los scripts?

  1. Para tener documentados los cambios que se realizaron a la Base de Datos. Cada vez que se realiza un cambio se puede escribir un comentario que nos indique la fecha, el autor y el motivo del cambio
  2. Para copiar bases de datos (en forma total o parcial) de una computadora a otra computadora
  3. Para poder mirar como está compuesta una Base de Datos y si está todo bien o si hay algún error
  4. Para tener un backup de la Base de Datos (puede ser total, aunque generalmente sólo de los metadatos). Esto nos permitirá recuperarla si hay algún problema.

Si documentamos los cambios a la Base de Datos, especificando claramente la fecha, el autor, y el motivo del cambio más adelante nos será muy fácil entender qué se hizo y por qué se hizo.

Si la creación de los metadatos sigue un orden específico, encontrar los errores será muy fácil y además nos aseguraremos que los objetos existirán más adelante, cuando objetos dependientes se refieran a ellos.

¿Cómo se escriben los comentarios en un script?

Con la pareja /*    (mi comentario)    */

Por ejemplo: /* esto es un comentario en el script */

O con dos guiones seguidos: — (mi comentario)

Por ejemplo: — este es otro comentario en el script

¿Cuál es el orden que se debe seguir para crear scripts?

Como vimos anteriormente, lo mejor es que tengas varios scripts, no uno solo para realizar todas las tareas sino que cada tarea debería tener su propio script. Por ejemplo:

  • MiBase01.SQL para CREATE DATABASE
  • MiBase02.SQL para CREATE DOMAIN
  • MiBase03.SQL para CREATE GENERATOR
  • MiBase04.SQL para CREATE EXCEPTION
  • MiBase05.SQL para CREATE TABLE, para agregar PRIMARY KEY y para agregar UNIQUE
  • MiBase06.SQL para FOREIGN KEY
  • MiBase07.SQL para CREATE INDEX
  • MiBase08.SQL para CREATE TRIGGER
  • MiBase09.SQL para CREATE PROCEDURE
  • MiBase10.SQL para INSERT en las tablas que tienen datos estáticos, como los nombres de los estados o de las provincias
  • MiBase11.SQL para GRANT derechos a los usuarios
  • MiBase12.SQL para los cambios realizados con posterioridad, todos documentados con la fecha, el autor, y el motivo del cambio
  • MiBase13.SQL para datos de prueba, con los cuales verificamos que la Base de Datos esté funcionando como se espera

En tu caso, en lugar de escribir “MiBase” escribirías el nombre de tu Base de Datos, por ejemplo: Conta01.SQL, Conta02.SQL o Sueldos01.SQL, Sueldos02.SQL, etc.

Listado 1. MiBase01.SQL

SET SQL DIALECT 3;

CREATE DATABASE 'E:\DATABASES\MiBase.fdb'
   PAGE_SIZE 4096
   DEFAULT CHARACTER SET ISO8859_1
   USER 'SYSDBA'
   PASSWORD 'masterkey' ;

COMMIT ;

Listado 2. MiBase02.SQL

CREATE DOMAIN D_BOOLEAN AS      -- T = verdadero, F = falso
   CHAR(1) CHARACTER SET NONE
   CHECK (VALUE = 'F' OR VALUE = 'T');

CREATE DOMAIN D_CANTIDAD1 AS
   SMALLINT;

CREATE DOMAIN D_CANTIDAD2 AS  -- El formato es: pppppppp.ssss
   NUMERIC(12, 4);            -- o sea 8 números en la parte entera y 4 decimales

COMMIT;

Listado 3. MiBase03.SQL

Aquí podemos verlo como fue creado con el Bloc de Notas.

SCRIPT2

Captura 1. Si haces clic en la imagen la verás más grande

Listado 4. Ejecutando un script desde ISQL

Para ejecutar un script desde el programa ISQL.EXE usamos el comando INPUT.

SCRIPT1

Captura 2. Si haces clic en la imagen la verás más grande

Ejemplo 5. Ejecutando un script desde EMS SQL Manager

SCRIPT3

Captura 3. Si haces clic en la imagen la verás más grande

Después de hacer click en la opción “SQL Script” se te mostrarán varias opciones relacionadas con los scripts.

SCRIPT4

Captura 4. Si haces clic en la imagen la verás más grande

Puedes usarlas para crear nuevos scripts, abrir un script que está grabado en el disco duro, grabar el script que estás escribiendo, ejecutar un script, etc. También tienes la posibilidad de crear un script a partir de cualquiera de los metadatos, por ejemplo para crear un script de la tabla BANCOS, buscas esa tabla, haces click sobre su nombre con el botón derecho, eliges la opción “Script to New SQL Editor” y luego la opción “Create” y verás el script correspondiente a crear esa tabla.

SCRIPT5

Captura 5. Si haces clic en la imagen la verás más grande

Lo que verás después de hacer click sobre la opción “Create” será algo similar a lo siguiente:

SCRIPT6

Captura 6. Si haces clic en la imagen la verás más grande

O sea que puedes ver la estructura de la tabla BANCOS, su Primary Key (si la tiene, claro), sus restricciones FOREIGN KEY (si las tiene, claro), sus restricciones UNIQUE (si las tiene, claro), sus índices, sus triggers.

De esta manera podrás saber como es la estructura de cada una de tus tablas. Como un archivo de script es un archivo de texto, lo recomendable es que escribas muchos comentarios en él, para que te ayude más adelante si necesitas reconstruir su contenido.

Conclusión:

Usar archivos de script es muy útil, es una facilidad que el Firebird nos otorga y que deberíamos usar para tener bien documentados los cambios a nuestra Base de Datos y poder reconstruirla eficientemente cuando sea necesario.

Artículos relacionados:

Usando un scrip para insertar datos fijos

Usando scripts para documentar la Base de Datos

El índice del blog Firebird21

El foro del blog Firebird21