¿Existe una alternativa de "hombre pobre" a RedGate para crear un esquema de base de datos completa? [cerrado]

StackOverflow https://stackoverflow.com/questions/169107

Pregunta

Estoy en una situación en la que generaría un script para una base de datos que podría ejecutar en otro servidor y obtener una base de datos idéntica a la original, pero sin ninguno de los datos. En esencia, quiero terminar con un gran script de creación que capture el esquema de la base de datos.

Estoy trabajando en un entorno que tiene instalado SQL Server 2000 y no puedo instalar las herramientas del cliente 2005 (en caso de que me ayuden). No puedo pagar RedGate, pero realmente me gustaría tener una base de datos con un esquema idéntico en otro servidor.

¿Alguna sugerencia? Cualquier herramienta .exe simple (no requiere instalación), consejos o trucos de T-SQL serán muy apreciados.

Actualización: La base de datos con la que estoy trabajando tiene más de 200 tablas y varias relaciones y restricciones de clave externa, por lo que crear scripts manualmente en cada tabla y pegar el script no es una opción viable. Estoy buscando algo mejor que esta solución manual

Actualización adicional A menos que me falte algo por completo, esta no es una solución viable con las herramientas de SQL 2000. Cuando selecciono la opción para generar un script de creación en una base de datos. Terminé con un script que contiene un comando CREATE DATABASE, y no crea ninguno de los objetos: las tablas, las restricciones, etc. El estudio de administración de SQL 2005 también puede manejar los objetos, pero la base de datos está en un entorno donde no hay manera de conectarme una instalación de Management Studio.

¿Fue útil?

Solución

Ejecute SQL Server Management Studio, haga clic derecho en la base de datos y seleccione Script Database como > Crear para > archivo

Eso es para SQL Server 2005. SQL Server 2000 Enterprise Manager tiene un comando similar. Simplemente haga clic derecho en la base de datos > Todas las tareas > Generar scripts .

EDITAR: en SQL Server 2005, puede seleccionar " Base de datos " en el panel del explorador de objetos y seleccione varias bases de datos en el panel de detalles. Luego, haga clic con el botón derecho en su selección y " Base de datos de secuencias de comandos como > Crear para > archivo " ;. Esto hará que los ponga a todos en un solo script e incluirá todas las tablas, claves, procedimientos almacenados y restricciones.

Otros consejos

Por lo tanto, supongo que no puede instalar SQL Server Management Studio. Ni siquiera la versión gratuita. Si esto es una sola cosa, me gustaría instalar las herramientas de la puerta roja. La versión de prueba es totalmente funcional durante 14 días. Haz tu trabajo, luego desinstala. También puede consultar http://www.xsqlsoftware.com/ , tienen funciones similares a las de Red Gate. Si su base de datos es pequeña, entonces tienen una opción gratuita para usted. También me gusta http://www.apexsql.com/ . Utilice la versión de prueba de uno de estos y luego vuelva a intentar convencer a su jefe para que compre uno.

Además de las respuestas anteriores, me gustaría sugerir que (para proyectos futuros, al menos) no tiene su diseño de base de datos principal en la propia base de datos.

Una forma de lograr esto es simplemente mantener las tablas de la base de datos, los procedimientos, etc., como scripts 'CREAR' desde el primer día, y diseñar un script maestro que junte todos los scripts individuales para implementarlos en una base de datos de su elección .

Una solución más sofisticada es usar algo como Visual Studio Database Edition (Probablemente demasiado costoso, si sus comentarios son válidos) que le permite tratar cada objeto de la base de datos como un nodo en un proyecto, al tiempo que permite todo Lo que se implementará con unos pocos clics.

La explicación de estas dos opciones está simplificada en exceso, ya que hay muchos otros problemas (control de versiones, migración de datos, etc.) pero el principio fundamental es el mismo.

Una vez que haya extraído su secuencia de comandos, utilizando una de las otras respuestas, puede considerar usar esta secuencia de comandos como la base de su "maestro".

Simplemente mantenga el 'diseño' fuera de la base de datos, eso es solo para 'implementaciones'.

Intente pensar que el proceso es similar al código en desarrollo: la fuente y los archivos binarios se mantienen separados, y este último se genera a partir del primero.

He utilizado este programa de CodeProject con éxito muchas veces antes. No solo hace un script del esquema, sino que puede (opcionalmente) escribir todas las instrucciones INSERT que necesitará para recrear la base de datos.

Lo he usado contra SQL Server 2000 en el pasado. Obviamente, si tiene un millón de filas en una tabla, puede que no sea una buena idea hacer un script de los contenidos, pero es realmente una buena herramienta para hacer una serie de scripts SQL para replicar una base de datos.

Si se trata de una operación única y no le apetece ordenar los scripts de objetos, simplemente descargue una versión de prueba gratuita de RedGate SQL Compare .

Es la versión de trabajo completa de 14 días, por lo que hará todo el trabajo por usted & # 8211; Es una solución completamente legítima. Y tendrá todos los scripts para su uso futuro con sus scripts manuales. De todos modos, estoy bastante seguro de que si descubres qué tan útil es la herramienta, la comprarás en una etapa posterior y eso es lo que probablemente esperan al ofrecer una prueba completamente funcional. De alguna manera funcionó de esa manera en mi caso.

Solo tenga en cuenta que una vez que la versión de prueba caduca, afecta a todas las herramientas, así que asegúrese de aprovecharla al máximo.

Michael Lang, cuando hace clic con el botón derecho en la base de datos y elige crear un script, hay varias casillas de opciones en las que deberá hacer clic para que todo se genere. 2005 es mucho más fácil a este respecto, pero 2000 puede hacerlo, solo tiene que seleccionar las opciones adecuadas.

Si está buscando una versión de línea de comandos, Sql Server Hosting Toolkit me ha funcionado en el pasado.

Asistente para la publicación de bases de datos de Microsoft (en Visual Studio 2008).

Como mencionó en SQL Server 2000 , el comando a usar es:

Mientras estés en Enterprise Manager , selecciona la base de datos desde la que deseas crear un script de objetos y luego haz clic derecho y selecciona Todas las tareas - > Generar secuencias de comandos SQL ...

Mientras está en el Panel Opciones , es útil seleccionar la opción Crear un archivo por objeto de esa manera, puede almacenar cada objeto en el control de origen por separado.

Entonces, cada vez que realice algunas actualizaciones en una tabla A, puede verificarlo en el control de origen para que otros sepan que trabaja en él y, una vez que termine, puede escribir ese único objeto y guardar el registro.

Para crear secuencias de comandos de un solo objeto, puede tener la misma opción Todas las tareas - > Genere secuencias de comandos SQL ... y luego seleccione solo ese objeto.

El único problema con ese enfoque es que cuando desea restaurar la base de datos completa necesita cuidar los objetos dependientes en el sentido de que el objeto de nivel superior debe restaurarse antes que los que dependen de ellos.

Irónicamente, cuando ejecuta una secuencia de comandos de toda la base de datos en un archivo, los objetos no están ordenados en términos de dependencia, sino que se basan en la fecha de creación. Esto conduce a errores cuando intenta usarlo para restaurar la base de datos completa.

Terminamos creando un archivo de proceso por lotes que crearía cada objeto por separado llamando a " osql "

Y todo funcionó bastante bien en ese momento

Ahora utilizamos SQLCompare Pro y nos protege de o eso es una molestia, pero si no haces un lanzamiento frecuente, puedes vivir sin él.

Los demás son correctos, pero para crear una base de datos completa desde cero, debe crear un 'dispositivo' en SQL antes de ejecutar las tablas de creación y los scripts de procedimientos ...

Use ADODB, ya que casi todas las cajas de Windows (si no todas) lo tienen instalado para ejecutar el script.

Demonios, incluso podrías escribir un vbScript que se ejecute para construir toda tu base de datos. Cualquier tabla de dominio que tenga, recuerde activar la inserción de identidad antes de agregar los elementos a la base de datos.

Estoy abierto a compartir código fuente si lo necesita. Tuve que escribir lo mismo hace un par de años, y terminé con 3 scripts, uno que creó el dispositivo, luego las tablas, luego los procedimientos / activadores y los datos del dominio. Escribí el código para analizar el script predeterminado y permitir al usuario nombrar su propia base de datos, inicios de sesión, etc. Es posible que no tenga que ir tan lejos.

Espero que esto ayude en absoluto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top