2012-10-03 9 views
21

He creado una base de datos en SQL Server y una aplicación de usuario front-end en winforms C#. Está en funcionamiento y funciona bien, pero el cliente me ha pedido que configure una versión de prueba para capacitar a nuevos empleados, de modo que puedan incluir datos ficticios mientras están capacitados sin afectar la base de datos en vivo "real".Crear base de datos SQL duplicada para probar

Cuando instalé la base de datos lo tenía todo escrito, pero las cosas han cambiado desde entonces, y no quiero particularmente guiar todas las tablas nuevamente.

¿Existe una manera rápida y conveniente de duplicar la base de datos (y sus datos) en el mismo servidor, pero con un nombre diferente?

EDITAR (posterior a Tony posterior Hopkinson)

Tengo por lo que este

exec sp_addumpdevice 'Disk','MyDatabaseBackup',N'D:\MyDatabaseBackup' 
Restore Database MyDatabase From MyDatabaseBackup With File = 1, 
Move 'MyDatabase' To N'C:\Program Files\Microsoft SQL 
Server\MSSQL11.SQLE\MSSQL\DATA\MyDatabaseTEST.mdf', 
Move 'MyDatabase_Log' To N'C:\Program Files\Microsoft SQL 
Server\MSSQL11.SQLE\MSSQL\DATA\MyDatabaseTEST_log.ldf', 
NORECOVERY, NOUNLOAD, STATS = 10 
RESTORE LOG [MyDatabaseTEST] FROM [MyDatabaseBackup] WITH FILE = 2, NOUNLOAD, STATS = 10 
exec sp_dropdevice MyDatabaseBackup 

Pero estoy recibiendo el siguiente mensaje de error

Msg 3234, Nivel 16, estado 2, línea 2 El archivo lógico 'MyDatabase' no forma parte de la base de datos 'MyDatabase'. Utilice RESTORE FILELISTONLY para ver una lista de los nombres de archivos lógicos. Msg 3013, nivel 16, estado 1, línea 2 RESTAURAR BASE DE DATOS está terminando anormalmente. Msg 3154, nivel 16, estado 4, línea 6 El conjunto de respaldo contiene una copia de seguridad de una base de datos que no sea la existente 'MyDatabaseTEST'. Msg 3013, nivel 16, estado 1, línea 6 RESTAURAR REGISTRO está finalizando anormalmente. Dispositivo caído.

Respuesta

27

opción de base de datos de uso de la copia en SQL Server Management Studio

enter image description here

+0

Parece muy simple, pero cuando hago esto no hay una opción para copiar la base de datos en la lista de tareas desplegable? – PJW

+0

@PJW: ¿Estás usando la edición Express? –

+1

sí - ¿esta opción no está en Express? :( – PJW

1
  • un volcado de la base de datos en un archivo de copia de seguridad
  • volver a crear la base de datos desde el volcado - que es una secuencia de comandos que se puede ejecutar - con diferente nombre (que usted tiene que cambiar en el guión)

puede seguir (this)

3

En primer lugar hacer una copia de seguridad completa de su base de datos actual, que por supuesto usted tiene :)

El que restaurarlo a otra

por ejemplo, algo así como

exec sp_addumpdevice 'Disk','LiveDataBackup',N'Insert backup file name here including path' 
Restore Database TestData From LiveDataBackup With File = 1, 
Move 'LiveData' To N'Path to where sqlserver expects the mdfs to be\TestData.mdf', 
Move 'LiveData_Log' To N'Path to where sqlserver expects the ldf to be\TaxData1.ldf', 
NORECOVERY, NOUNLOAD, STATS = 10 
RESTORE LOG [TestData] FROM [LiveDataBackup] WITH FILE = 2, NOUNLOAD, STATS = 10 
exec sp_dropdevice LiveDataBackup 

Supongamos que su base de datos en vivo se llama astutamente LiveData y prueba, TestData.

La ruta en la que será la MDF y LDF depende de la versión de SQL Server y el nombre de la instancia

Debe ser algo así como C: \ Archivos de programa \ Microsoft SQL Server \ MSSQL11.DENALI \ MSSQL \ DATA \

MSSQL11 porque es SQL 2012, y Denali es mi nombre de instancia y se instala de forma predeterminada en C: \ Archivos de programa

también que no hay con reemplazar, así que si quería correr de nuevo, necesitarías Soltar tu base de datos de prueba.

Probablemente haya alguna manera de hacer esto desde la GUI, pero me pareció una PIA masiva tratando de relacionar la IU, con lo que quería hacer.

+1

Esto no funcionó como estaba, pero fue muy útil para llegar allí. Necesitaba agregar "BACKUP DATABASE LiveData TO LiveDataBackup" antes el comando RESTORE, y elimina el parámetro "NORECOVERY" de RESTORE. El "RESTORE LOG" no parece ser necesario. – DJDave

2

uso de MS SQL Server 2012, es necesario realizar 3 pasos básicos

primera, generar el archivo .sql contiene sólo la estructura de la fuente DB

=> haga clic derecho en la fuente DB y luego tareas y luego generar scripts => siga el asistente yu puede guardar el archivo .sql localmente

en segundo lugar, vuelva a colocar en el archivo .sql el dB de origen con el destino de uno

=> haga clic derecho en el archivo de destino, abra el archivo .sql y pulse Nueva consulta y Ctrl-H o (Editar - Buscar y reemplazar - reemplazar Quack)

por último, rellenar con los datos

=> clic derecho sobre el detination DB, a continuación, Tareas y luego datos => fuente de importación de datos serie al Dow a ".net procider datos de marco para SQL Server" set campo de texto de cadena + conexión de la sección dATOS ejemplo: datos Fuente = Mehdi \ SQLEXPRESS; Catálogo inicial = db_test; ID de usuario = sa; Contraseña = sqlrpwrd15
=> Lo mismo que ver con el destino => comprobar la tabla que desea transferir o casilla de verificación, además de "fuente: ....." para comprobar todos ellos

haya terminado.

0

He encontrado que este método es más eficaz en SQL Server 2005 y 2008, ediciones Express:

Desde el Microsoft Docs:

  1. Haga clic derecho sobre la base de datos que desea duplicar y seleccione Tareas de> "Copia de seguridad ..."
  2. Guardar la copia de seguridad en un archivo .bak clic
  3. derecho en la carpeta "bases de datos" en el Explorador de objetos en SQL Server Management Studio
  4. Elija "Restaurar base de datos"
  5. Como fuente, seleccione "Archivo" y apunte al archivo .bak que creó anteriormente.
  6. Cambiar el nombre de la base de datos para restaurar a (este fue el paso clave para mí - no están limitados a las opciones en el menú desplegable.)

SSMS restaurará su archivo .bak a una nueva base de datos de acuerdo con el nombre que le das. enter image description here

Cuestiones relacionadas