Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   "Clonar" estructura de base de datos (https://www.clubdelphi.com/foros/showthread.php?t=68701)

Flecha 01-07-2010 10:07:23

"Clonar" estructura de base de datos
 
Hola a todos.

Tengo una consulta para gente algo expertilla en SQL Server. A ver si hay suerte.

Os expongo mi problema.
Tengo una serie de aplicaciones que prestan un servicio conjunto a mis clientes. Todas las aplicaciones se apoyan en SQL Server. Cada cliente mío, tiene localmente instalado su propio servidor SQL Server, y obviamente todos con la misma estructura de base de datos, e idéntica, por supuesto, a la mía en mi puesto de desarrollo.
En mi mantenimiento del servicio prestado, aparte de la modificación de los programas, a veces es necesario crear/modificar alguna tabla/procedimiento/trigger/job. Dicho cambio en base de datos, debo luego hacerlo extensible a los servidores SQL Server de mis clientes. Para ello tengo diseñado un sistema para "clonar" la base de datos del puesto de desarrollo. Consiste en recoger de mi base de datos toda su estructura, creándome con ello un archivo que luego envío a cada cliente incluido en el paquete de actualización de versión. Allí, en cliente, otra aplicación analiza el archivo generado, reconstruye las sentencias SQL, y así actualiza la estructura de base de datos de su servidor local para hacerla coincidir con la estructrua de base de datos de mi servidor en desarrollo.

Este proceso en su día se diseñó para actualización de tablas, procedimientos, triggers, y jobs. Para ello, obtenía la estructura de mi base de datos de desarrollo consultando en las tablas de sistema SYSOBJECTS, SYSUSERS, SYSCOMMENTS, INFORMATION_SCHEMA.COLUMNS, SYSINDEXES, SYSINDEXKEYS, SYSCOLUMNS, MSDB.DBO.SYSJOBS, MSDB.DBO.SYSJOBSTEPS, MSDB.DBO.SYSJOBSSCHEDULES, MSDB.DBO.SYSSCHEDULES (sólo a partir de SQL Server 2005).

Pero ahora, y aquí está mi problema, necesito también poder "clonar" las vistas. Sé que en SYSOBJECTS puedo comprobar si ya existe una vista con un determinado nombre. Pero no sé en qué tabla del sistema se guarda el cuerpo de la vista. Y ésto es fundamental para poder "clonarla".

¿Alguien sabe dónde guarda SQL Server (2000 y 2005) el cuerpo de las vistas?

Muchas gracias.
Un saludo.

Neftali [Germán.Estévez] 01-07-2010 10:37:07

Échale un vistazo a la tabla SysComments.

A parte de esto, te recomendo que mires alguna herramienta de comparación de Bases de Datos (AppexSQL, por ejemplo).
Os pueden ahorrar mucho trabajo, ya que hacen la comparación de todos estos elementos y generan de forma automática el Script necesario para sincroniar ambas Bases de Datos.
Este en concreto lo usamos para algo similar a lo que haces tú y funciona muy bien.

Flecha 01-07-2010 11:11:21

:):):):)
Muchísimas gracias campeón. Ni se me había ocurrido mirar en esa tabla, y eso que ya la usaba para obtener el cuerpo de procedimientos y triggers.

Gracias también por el consejo, pero cambiar de sistema de actualización implicaría cambios tanto en "origen" (a la hora de hacer el "clon") como en destino (a la hora de copiar el "clon" en el cliente). A estas alturas del proyecto me supone mucho menos cambios la solución que me has dado con SYSCOMMENTS, que cambiar el sistema de actualización. De todos modos, muchas gracias, porque la idea también es genial.

Un saludo.


La franja horaria es GMT +2. Ahora son las 02:40:22.

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