2010-11-24 32 views
42

Me gustaría hacer una copia de una base de datos que tengo pero mantenerla en el mismo servidor como una base de datos de prueba. Sin embargo, todo lo que he encontrado es usar el asistente de copiar bases de datos (estoy usando MS SQL Server Express).copiar una base de datos dentro de SQL Server Express?

Las instrucciones siempre dicen: En SQL Server Management Studio, en el Explorador de objetos, expanda Bases de datos, haga clic con el botón derecho en una base de datos, señale Tareas y luego haga clic en Copiar base de datos.

No tengo la opción Copiar base de datos. Me estoy ejecutando como administrador, por lo que no tengo idea de por qué me falta - ¿es algo que tengo que instalar por separado? No puedo hacer el Separar/Adjuntar ya que está copiando en el mismo servidor. Traté de separar, copiar el MDF/LDF, cambiar el nombre, adjuntar, pero como se puede imaginar que ensució un montón :) No soy genial con SQL para hacerlo todo programáticamente. ¿Hay alguna herramienta que pueda usar?

+1

posible duplicado de [Cómo puedo clonar una base de datos de SQL Server en el mismo servidor de SQL Server 2008 Express?] (http://stackoverflow.com/questions/3829271/how- can-i-clone-an-sql-server-database-on-the-same-server-in-sql-server-2008-exp) – qub1n

Respuesta

0

Intente realizar una copia de seguridad de su base de datos y restaurarla en una base de datos completamente nueva.

  • Crear nueva base de datos.
  • Haga una copia de seguridad completa de su original.
  • Haga clic con el botón derecho en su nueva base de datos, pulse Restaurar.
  • Navegue hasta su .BAK y asegúrese de que .mdf y .ldf coinciden con los nuevos.
1

No creo que la versión Express del administrador tendrá la característica de copiar base de datos. ¿Ha considerado copiar mediante el método de copia de seguridad y restauración?

http://msdn.microsoft.com/en-us/library/ms190436.aspx

+0

Lo hice pero no funciona desde w y restaurar en el mismo servidor donde esta base de datos ya existe :( – Jenn

+0

Si restaura a una base de datos con un nombre diferente, también debe incluir la opción de cambiar el nombre de los archivos de datos (LDF/NDF/MDF). Esto evita que Sql intente sobreescribir los archivos de datos de la base de datos original. –

+0

@DanPuzey ¿pueden dar más detalles sobre eso? ¿Cómo debería ser exactamente el procedimiento? – Fede

3

Siga estos pasos para hacer una copia de la base de datos en SQL Express

  1. Detener SQL
  2. Copiar el mdf, LDF y cualquier otro archivo para el PP a una nueva ubicación (asegurarse de obtener el archivo de registro)
  3. Cambiar el nombre de cada archivo copiado
  4. de inicio de SQL
  5. Haga clic base de datos en SSMQ y seleccione Adjuntar
  6. Asegúrese de cambiar el nombre de la columna "Adjuntar como"
  7. actualización de la ubicación del archivo en el panel inferior de la "base de datos" Detalles de la ubicación de los archivos copiados (especialmente el archivo de registro)

que era capaz de copiar una base de datos en mi sistema de SQL Express con este método

alt text

+1

Lo hice pero no pude hacerlo funcionar. Rompió mi base de datos original cuando adjunté la nueva con un nombre nuevo. Así que todo el código que golpeé contra esta nueva base de datos con un nuevo nombre funcionó bien, pero mi código anterior que golpeaba el nombre de mi antigua base de datos estaba roto. Necesito poder usar ambas bases de datos. – Jenn

+0

FYI - apareció como dos bases de datos distintas. Pero de alguna manera no funcionó de la manera que pensé que sería (y la forma en que dices que lo hace). Lo intentaré de nuevo, por si acaso, siguiendo exactamente sus instrucciones. – Jenn

68

en SSMS 2008 se puede hacer esto:

  1. Crear una copia de seguridad de la base de datos que desea copiar

  2. En SSMS, haga clic en 'Bases de datos' y seleccione 'Restaurar base de datos'

  3. Seleccione la base de datos que desea copiar desde el Lista desplegable 'De la base de datos' en la sección 'Fuente para restauración'

  4. Ingrese el nombre de la nueva base de datos en el campo 'A la base de datos' en la sección 'Destino para restauración'; este no puede ser el nombre una base de datos existente.

  5. Haga clic en OK

ya está! :)

+7

Para mí causa muchos problemas, ya que todavía trata de usar el mismo archivo MDF y LDF como la base de datos copiada. Puede cambiar los archivos MDF y LDF para usar, pero aún así, de alguna manera, a menudo trata de usar los de la base de datos original. – krzychu

+1

@krzychu Tengo un problema similar. ¿Has logrado solucionarlo? – Fede

+2

Lo hice - después de algunos intentos, cambiando las rutas MDF y LDF mientras restauraba la base de datos trabajada. De algun modo. No recuerdo si he hecho algo especial allí para que funcione. – krzychu

2

Sólo ten en cuenta si está utilizando SQL Server Express 2012 de ir a la opción de archivos y asegúrese de que los archivos de destino (Restaurar como columna) son diferentes de los archivos originales * .mdf y * .log

(Intenté poner una imagen pero necesito 10 reputación: p)

8

La base de datos SQL Express tiene un botón de exportación, exporté la base de datos a una nueva base de datos en el mismo servidor, está copiando la base de datos. Simplemente haga clic derecho en el nombre de la base de datos.

+0

Más lenta que la copia de seguridad/restauración, pero la respuesta más fácil ya prueba de tontos proporcionada especialmente cuando se migran muchas bases de datos pequeñas. –

+0

En realidad, creo que es más rápido, ya que se necesita la mitad de la lectura y la escritura. Las cuentas de usuario también se copiaron. –

+0

No copia los procedimientos almacenados. No estoy seguro acerca de los índices. – krzychu

42

En SQL Server 2012 se puede hacer siguiendo los pasos:

  1. Crear una copia de seguridad de la base de datos que desea copiar
  2. haga clic derecho en "Bases de datos" y seleccione "Restaurar archivos y grupos de archivos"
  3. Ingrese el nombre de la nueva base de datos en el campo "A la base de datos".
  4. Seleccione "Desde dispositivo" y seleccione el archivo que backuped en el primer paso
  5. clic en "OK"

este "clonará" la base de datos con los arreglos de mesa correctos, tales como el "default value "y" auto increase "etc.

+2

Esto también funciona muy bien con SQL Server Express 2008 R2. ¡Gracias! – DaveN59

+0

Para hacer una copia de seguridad y restaurar la base de datos, ¿necesito iniciar sesión como administrador? – user585440

+0

Utilicé "Restaurar base de datos" antes de notar la respuesta sugerida "Restaurar archivos y grupos de archivos". Recibí lo que quería, pero me pregunté cuál sería la diferencia. – Alan

1

La solución es definitivamente crear una copia de seguridad y restaurarla, pero asegúrese de que está restaurando la copia apuntando a diferentes archivos .mdf y .ldf.

A continuación, le mostramos cómo comprobar que con SSMS 2014 y una instalación de SQL Server 12: http://screencast.com/t/7L29BEJcr9e, suponiendo que está creando y restaurando copias de seguridad en su disco local.

  • Crear una copia de seguridad de base de datos existente
    • Haga clic derecho en la base de datos, y seleccione "copia de seguridad ..." en "tareas".
    • (Si sale de la ubicación que el defecto, usted no tiene que buscar la copia de seguridad en el paso siguiente cuando se restaura.)
  • restaurar su copia de seguridad de una base de datos:
    • Haga clic derecho sobre bases de datos, elegir la opción "restaurar la base de datos"
    • Seleccione "dispositivo"
    • Haga clic en el botón de puntos suspensivos ("...") para abrir el diálogo 'dispositivos de copia de seguridad seleccionar destino'.
    • Seleccione "Archivo" como el tipo de medio de copia de seguridad y haga clic en el botón "añadir"
    • Seleccione la copia de seguridad que acaba de hacer, haga clic en OK (dos veces)
    • Ahora, de vuelta en la "base de datos de restauración" de diálogo, Tipo A nuevo nombre para su base de datos de destino
    • Haga clic en "archivos" en "seleccionar una página" y asegúrese de que "restaurar como" apunta a nombres de archivos .mdf y .ldf que no existen
    • Haga clic en Aceptar!
1

me encontré con el problema! Haga clic en Bases de datos, restaure y haga lo siguiente: Después de elegir desde dónde restaurar y escribir el nombre de destino de db, vaya a los archivos [anotación 1 en la imagen] y cambie los nombres de los archivos de la columna muy diferentes a los originales [ 2 anotación en la foto] entonces funciona :)

> SEE THE PICTURE HERE <

0

creo que podría intentar importar datos a una nueva base de datos.

  1. Crear una base de datos vacía en su servidor SQL local de
  2. clic derecho en la nueva base de datos -> tareas -> datos de importación
  3. En el Asistente para importación y exportación de SQL Server, seleccione de env producto nombre del servidor como fuente de datos . Y seleccione su nueva base de datos como datos de destino.
0

Pensé en una manera realmente ingeniosa de evitar esto :) Así que pensé que debería publicar mi idea. Tenga en cuenta que esto no está probado, pero creo que funcionará.

  1. hacer una base de datos "Copia de seguridad ..." (esto es, teóricamente, en el servidor de producción , pero no tiene que ser)
  2. Copia el archivo de copia de seguridad (desde el servidor de prod) en su máquina de desarrollo
  3. Suponiendo que está utilizando SSMS Developer Edition en su equipo de desarrollo , puede luego hacer un "Restaurar" en el equipo de desarrollo, luego hacer un "copiar bases de datos" después también en el equipo de desarrollo (para crear una nueva copia de la base de datos)
  4. Ahora haga una "copia de seguridad ... "En la nueva base de datos que acaba de crear, copiar el archivo de copia de seguridad (para el servidor de producción) y hacer un 'Restaurar' en el servidor SQL Server Express :)

Espero que esto ayude a cabo unas pocas personas :)

Saludos,

Jeff

Cuestiones relacionadas