Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-07-2010
Flecha Flecha is offline
Miembro
 
Registrado: nov 2006
Posts: 59
Poder: 18
Flecha Va por buen camino
"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.
Responder Con Cita
  #2  
Antiguo 01-07-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
É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.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 01-07-2010
Flecha Flecha is offline
Miembro
 
Registrado: nov 2006
Posts: 59
Poder: 18
Flecha Va por buen camino

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.
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
El programa se queda "colgado" mientras copia y luego "despierta" NeWsP OOP 5 10-03-2010 22:05:40
"Mejor" base de datos que MySQL... Ñuño Martínez Conexión con bases de datos 23 08-03-2010 15:59:39
"OBJECT OR CLASS TYPE REQUIRED" en "APPLICATION EXENAME" Xavierator Varios 3 27-10-2008 09:09:50
Búsqueda "incremental" en una base de datos loquillo3 Conexión con bases de datos 9 08-11-2007 18:07:02
Necesito llamar a métodos de clases "hija" desde su clase "padre" Flecha OOP 17 20-04-2007 00:03:53


La franja horaria es GMT +2. Ahora son las 20:34:32.


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