¿Cuál es la forma más efectiva de duplicar una instancia en SQL 2008?


14

Tenemos una instancia de base de datos simple con los datos suficientes en las bases de datos para mantenerla útil, y podemos usarla con fines de demostración, y quiero poner una copia en mi computadora portátil para poder usarla para el trabajo de desarrollo cuando No estoy en la oficina. (Las instancias normales de la base de datos de desarrollo son de aproximadamente 150 GB, esta instancia es de 3 GB)

¿Cuál es el método más repetible / programable para recrear la instancia en mi computadora portátil? Estoy seguro de que tendré que volver a ejecutar el instalador para SqlServer2008 y configurar una instancia, pero después de eso ... creo que quiero poder dejar mis bases de datos antiguas cada mes más o menos y copiar todas las cosas nuevas a mi computadora portátil, ya que mi instancia no cambiará ni en el sistema de demostración ni en la computadora portátil. Pero las bases de datos se actualizarán, con actualizaciones en los sprocs y similares.

He considerado hacer una secuencia de comandos con todos los "archivos de base de datos de caída; agregar archivos de base de datos {ruta}" y mantenerlos en un archivo por lotes ejecutable de algún tipo, y luego puedo "soltar, eliminar, copiar, agregar", pero me pregunté si era una mejor manera que solo xcopy y batch?

Estoy tratando de hacer esto a bajo precio (no siempre intentamos y hacemos cosas a bajo precio), así que no estoy particularmente interesado en los productos RedGate o similares. Quiero algo que pueda mantener fácilmente en un editor de texto para mí.


¿Es una base de datos única o una instancia de servidor SQL con más de una base de datos? Supongo que tiene un servidor sql instalado en su computadora portátil y máquina de desarrollo y tiene una base de datos, en ese caso puede usar la copia de seguridad y la restauración. Copia de seguridad de la máquina de desarrollo db, cópiela en la computadora portátil y restaure, viceversa ... ¿tiene sentido?
CoderHawk

¿Es SQL Server Express Edition? o estándar? SSIS es una buena opción para escenarios como este, desafortunadamente no está disponible en las ediciones Express y Web.
CoderHawk

Lo siento @Sandy ~ Es SQL Dev 2008. Tengo acceso a casi todo lo que puedes adivinar, a causa de MSDN.
jcolebrand

El título de la pregunta es poco confuso "¿Cuál es la forma más efectiva de duplicar una | instancia | en SQL 2008?" - instancia o base de datos?
CoderHawk

@Sandy ~ "Instance" ... de hecho, quiero todo.
jcolebrand

Respuestas:


4

Has dado en el clavo: copia los archivos. He usado esto con buenos resultados.

Yo diría que tiene que definir "barato" para incluir la inversión de tiempo para preparar una solución que no implique xcopy


3

Umm, no estoy seguro si esto ayuda, pero estamos usando un conjunto de scripts para "limpiar" una base de datos de producción y prepararla para el abuso del desarrollo. Estamos tomando todas las tablas grandes que tienen una columna de fecha y hora y estamos reconstruyendo la tabla con solo el último año de datos. De una base de datos completa de aproximadamente 200 GB, llegamos a una base de datos de aproximadamente 40 GB para el desarrollo. Principalmente estamos generando scripts dinámicos para crear archivos bcp para cada tabla, recrear la tabla (incluidas las restricciones relacionadas) y luego insertar en masa solo los datos del año pasado.

Quizás haya herramientas para hacer esto, pero nuestra tienda sale barata :-).


Sí, tomamos la ruta BCP para muchas cosas, así que entiendo lo que estás diciendo, y truncar algo de esto sería bueno, pero ya tengo los aproximadamente 3 GB de datos que necesito, así que no estoy realmente buscando agregar más allí. Solo quiero copiar toda la instancia y pensar que hay una manera de seguir haciéndolo repetidamente. Pero por lo demás, creo que estoy en la misma dirección de lo que estás hablando, solo un sacle más pequeño.
jcolebrand

Entonces repita todos los pasos en lotes :). SQL tiene parámetros por lotes y puede combinar archivos por lotes con archivos sql y obtener un paquete agradable. Creé un paquete personalizado de Log Shipping (tonto) que funciona en diferentes dominios y toda la preparación de db se realiza en archivos cmd / sql. Puede crear una instancia con nombre solo para su uso y allí iniciar / detener el servicio, restaurar la base de datos, limpiarla, prepararla, hacer una copia de seguridad y enviarla a alguna carpeta específica. Tal vez algún trabajo podría hacerse más rápido en powershell ... pero no estoy familiarizado con él.
Marian

sí, esa es la idea;)
jcolebrand

@jcolebrand - ¿Tal vez una herramienta como Norton Ghost o Clonezilla ayudaría? Lo necesitará para copiar las carpetas de copia de seguridad de productos en algún lugar de su terreno de juego, y luego haga toda la diversión (restaurar ... recortar ... etc.). No necesitará escribir las acciones de copia y solo manejará la parte sql :).
Marian

oooooh eso podría ser útil. Nuevas vías de consideración.
jcolebrand

0

La forma más fácil de actualizar su esquema para que coincida con esos sistemas es usar una herramienta como Red Gate SQL Compare o Embarcadero DB Change Manager.

Hay muchas otras herramientas disponibles que probablemente puedan hacer la misma comparación de esquemas e incluso proporcionarle el DDL para actualizar su esquema de base de datos.

Opciones

  1. Use una herramienta de terceros
  2. Copia de seguridad y restauración de la base de datos: es posible que deba restaurar a una instancia provisional para eliminar datos (debido a restricciones de espacio en la computadora portátil)
  3. Escriba su propio scripter de base de datos utilizando SMO y simplemente cree un trabajo que escriba los objetos, luego vuelva a crear su esquema cada mes / hora que lo necesite, luego use SSIS para cargar datos en los nuevos objetos.

¿Cómo funciona "Copia de seguridad y restauración de la base de datos" para la instancia? Yo quiero mantener los datos en estas tablas porque es un conjunto completo de datos, apenas más pequeño que la producción.
jcolebrand

SSIS probablemente me dejaría hacer lo que necesito, pero no sé lo suficiente sobre eso. Debería investigar más a fondo.
jcolebrand

@jcolebrand: sugerí la restauración de la copia de seguridad, simplemente tendría que considerar cómo mover datos a través de su sistema en vivo a su sistema de demostración cuando haga cosas como agregar columnas. Sin embargo, esto tiene el inconveniente de que requiere una restauración y luego la purga de datos antes de otra copia de seguridad y restaurar / separar y adjuntar.
johndacostaa
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.