una significa servidor restricciones restaurar que nivel migrar exportar datos crear compatibilidad cambiar admite sql-server

sql-server - servidor - que significa compatibilidad de base de datos



Crear una base de datos SQL duplicada para pruebas (5)

He creado una base de datos en el servidor SQL y una aplicación de usuario de front-end en winforms c #. Está en funcionamiento y funciona bien, pero ahora el cliente me ha pedido que configure una versión de prueba para capacitar a nuevos empleados, de modo que puedan ingresar datos ficticios mientras están entrenados sin afectar la base de datos real en vivo.

Cuando instalé la base de datos, la tuve toda en un script, pero las cosas han cambiado desde entonces, y no quiero particularmente hacer un script en todas las tablas nuevamente.

¿Existe una forma 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 la publicación de Tony Hopkinson)

He llegado tan lejos como esto

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 me aparece el siguiente mensaje de error

Msj 3234, Nivel 16, Estado 2, Línea 2 El archivo lógico ''Mi Base de Datos'' no forma parte de la base de datos ''Mi Base de Datos''. Utilice RESTORE FILELISTONLY para enumerar los nombres de archivos lógicos. Mensaje 3013, nivel 16, estado 1, línea 2 RESTORE DATABASE está terminando de manera anormal. Msg 3154, Nivel 16, Estado 4, Línea 6 El conjunto de copia de seguridad contiene una copia de seguridad de una base de datos que no es la base de datos ''MyDatabaseTEST'' existente. Msg 3013, nivel 16, estado 1, línea 6 RESTORE LOG está terminando de manera anormal. Dispositivo caído.


Encontré que este método es más efectivo en SQL Server 2005 y 2008, Express Editions:

De los documentos de Microsoft :

  1. Haga clic derecho en la base de datos que desea duplicar y elija Tareas -> "Copia de seguridad ..."
  2. Guarde la copia de seguridad en un archivo .bak
  3. Haga clic 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 señale el archivo .bak que creó anteriormente.
  6. Cambie el nombre de la base de datos para restaurar (este fue el paso clave para mí; no está limitado 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 dé.


Primero haga una copia de seguridad completa de su base de datos actual, que por supuesto que tiene :)

Lo devuelves a otro.

por ejemplo, algo 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 a donde estarán el mdf y el ldf depende de la versión del servidor SQL y del nombre de la instancia

Debe ser algo 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 instaló de forma predeterminada en C: / Archivos de programa

Además, no hay con reemplazar, por lo que si desea ejecutarlo de nuevo, deberá soltar la base de datos de prueba.

Probablemente haya alguna forma de hacer esto desde la GUI, pero encontré una PIA masiva que trata de relacionar la UI con lo que quería hacer.


Utilice la opción de copiar la base de datos en el estudio de administración del servidor SQL.


utilizando MS SQLServer 2012, debe realizar 3 pasos básicos

Primero, genere el archivo .sql que contiene solo la estructura del DB fuente.

=> haga clic derecho en la base de datos de origen y luego en Tareas luego genere secuencias de comandos => siga el asistente y podrá guardar el archivo .sql localmente

Segundo, reemplace en el archivo .sql la base de datos de origen con la de destino

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

Finalmente, poblar con datos.

=> haga clic derecho en la base de datos de detination, luego en Tasks y luego en Import Data => Data source drop dow configurado en ".NET framework data procider for sql server" + configure el campo de texto de la cadena de conexión bajo DATA ej: Data Source = Mehdi / SQLEXPRESS; Catálogo inicial = db_test; ID de usuario = sa; Contraseña = sqlrpwrd15
=> Lo mismo que hacer con el destino => marque la tabla que desea transferir o marque la casilla junto a "fuente: ....." para marcarlos todos

estás listo.


  • Volcar su base de datos en un archivo de copia de seguridad
  • Vuelva a crear su base de datos desde su volcado, es un script que puede ejecutar, con un nombre diferente (que debe cambiar en el script)

Puedes seguir ( this )