2008-10-03 12 views
17

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.¿Existe una alternativa de "pobre" a RedGate para crear scripts de todo el esquema de la base de datos?

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

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

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

Actualización adicional A menos que me falta algo por completo, esta no es una solución viable con las herramientas 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 se encuentra en un entorno donde no hay forma de conectar una instalación de Management Studio.

Respuesta

12

ejecutar SQL Server Management Studio, haga clic derecho en la base de datos y seleccione Script Database as > Create to > file

Eso es para SQL Server 2005. SQL Server 2000 Enterprise Manager tiene un comando similar. Simplemente haga clic derecho en la base de datos > All Tasks > Generate Scripts.

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

0

Los otros son correctas, pero con el fin de crear una base de datos completa desde cero, lo que necesita para crear un 'dispositivo' en SQL antes de ejecutar el Crear tablas y procedimientos scripts ...

Uso ADODB, ya que casi todos (si no todos) el cuadro de Windows lo tiene 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, debe recordar activar la inserción de identidad antes de agregar los elementos al DB.

Estoy abierto a compartir el 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/desencadenantes y los datos de dominio. Escribí el código para analizar la secuencia de comandos predeterminada y permitir que el usuario nombre su propia base de datos, inicios de sesión, etc. Puede que no tenga que llegar tan lejos.

Espero que esto ayude en absoluto.

+0

No estoy seguro de qué quiere decir con 'crear un dispositivo', base de datos tal vez ?. Siempre que la cuenta de SQL tenga suficientes derechos, absolutamente todo se puede escribir. – Kev

1

Michael Lang, cuando hace clic con el botón derecho en la base de datos y elige crear una secuencia de comandos, hay varias cajas 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 hacer esto, solo tiene que seleccionar las opciones adecuadas.

9

Supongo que no puede instalar SQL Server Management Studio. Ni siquiera la versión gratuita. Si esto es algo único, instalaría las herramientas de puerta roja. La versión de prueba es completamente funcional durante 14 días. Haz tu trabajo, luego desinstálalo. También puede consultar http://www.xsqlsoftware.com/, que 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/. Usa la versión de prueba de uno de estos y luego intenta de nuevo convencer a tu jefe para que compre uno.

+0

¡Gracias por la sugerencia! Otro obstáculo que no mencioné es que el problema inmediato que estoy tratando de resolver incluye bases de datos alojadas por el cliente y un bloqueo del entorno en el que tengo que pasar por situaciones difíciles para instalar el software. ¡Sugerencias muy útiles y relevantes! –

2

He usado this program from CodeProject con éxito muchas veces antes. No solo crea el esquema, sino que también puede (opcionalmente) crear todas las instrucciones INSERT necesarias 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 crear un script para los contenidos, pero en realidad es una herramienta muy útil para crear una serie de scripts SQL para replicar una base de datos.

1

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

6

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

Una forma de lograr esto es simplemente mantener sus tablas de bases de datos, procedimientos, etc. como 'CREAR' scripts desde el primer día, e idear un script maestro que junte todos los scripts individuales para su despliegue en una base de datos de su eligiendo.

Una solución más sofisticada es utilizar algo como Visual Studio Database Edition (Probablemente demasiado caro, si sus comentarios son cualquier cosa) que le permite tratar cada objeto de base de datos como un nodo en un proyecto, mientras permite el todo para ser implementado con unos pocos clics.

La explicación de estas dos opciones es demasiado simplificada, 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 script, utilizando una de las otras respuestas, le recomendamos que considere utilizar este script como base para su 'maestro'.

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

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

+0

Excelentes sugerencias. De hecho, ya había usado esa estrategia una vez en un proyecto: comprobando la creación de scripts en VSS (hubiera deseado utilizar algo que pudieras consultar en los juegos versionados, pero lo hubiera modificado un poco con las etiquetas). heredó esto de haber hecho esto. –

+0

De hecho, colocamos todos nuestros comandos CREATE en un solo script; puede que no se considere el mejor enfoque, pero funciona EXCELENTE para realizar cambios rápidos y para fines de documentación. –

1

Como usted ha mencionado en SQL Server 2000 el comando a utilizar es:

Mientras que en encargado de la empresa seleccione la base de datos que desea escritura de objetos desde y luego haga clic derecho y seleccione Todas las tareas -> Generar Scripts SQL ...

Mientras que en el Opciones panel es muy útil para seleccionar la opción Crear un archivo por objeto de esa manera se puede almacenar cada objeto de control de código fuente separado.

Así que cada vez que haces algunas actualizaciones en un tablaA se puede comprobar que en control de fuente para que los demás sepan que usted trabaja en él y el después de terminar puede crear un script que solo objeto y salvar a comprobarlo en.

Para crear un único objeto, puede hacer clic en la misma opción Todas las tareas -> Generar secuencias de comandos SQL ... y luego seleccionar solo ese objeto.

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

Irónicamente, cuando se ejecuta una secuencia de comandos de toda la base de datos en un archivo, los objetos no se ordenan en términos de dependencia sino en función de la fecha de creación. Eso lleva a errores cuando intenta usarlo para restaurar el DB completo.

Terminamos la creación de archivo por lotes que crearía cada objeto de llamar por separado "osql"

y que todas funcionó bastante bien en ese momento

Ahora usamos SQLCompare Pro y nos cajas fuertes de, o que sin problemas, pero si no lo haces con frecuencia, puedes vivir sin él.

+0

Bummer: pensé que recordaba vagamente un problema con las dependencias. Supongo que clasificarlos no va a ser tan divertido ya que tengo más de 200 tablas. Gracias por la útil respuesta –

2

Si se trata de una operación única y no le apetece pedir las secuencias de comandos del objeto usted mismo simplemente download a free trial version of RedGate SQL Compare.

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

Solo ten en cuenta que una vez que la versión de prueba expira, afecta a todas las herramientas, así que asegúrate de aprovecharlas al máximo.

+1

Usamos SQL Compare para comparar nuestra base de datos de desarrollo con una base de datos en blanco y obtener la secuencia de comandos de la que se puede aplicar a cualquier base de datos en blanco para que sea igual a la versión de desarrollo. La herramienta hace mucho más que eso y, aunque no necesariamente es barata, es esencial. –

Cuestiones relacionadas