¿Hay alguna manera de restaurar una copia de seguridad de la base de datos de SQL Server 2012 en un SQL Server 2008?
Intenté adjuntar un archivo, no funciona.
¿Hay alguna manera de restaurar una copia de seguridad de la base de datos de SQL Server 2012 en un SQL Server 2008?
Intenté adjuntar un archivo, no funciona.
Respuestas:
Tienes un par de opciones:
Opción A : base de datos de secuencia de comandos en modo de compatibilidad utilizando la opción Generar secuencia de comandos:
Nota: Si realiza un script de base de datos con esquema y datos, dependiendo del tamaño de sus datos, el script será masivo y SSMS, sqlcmd u osql no lo manejará (también puede estar en GB).
Opcion B:
Primero, escriba primero las tablas con todos los índices, FK, etc. y cree tablas en blanco en la base de datos de destino, opción con SÓLO ESQUEMA (sin datos).
Use BCP para insertar datos
bcp fuera de los datos usando el script de abajo configure SSMS en modo de texto y copie la salida generada por el siguiente script en un archivo bat.
-- save below output in a bat file by executing below in SSMS in TEXT mode
-- clean up: create a bat file with this command --> del D:\BCP\*.dat
select '"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\bcp.exe" ' /* path to BCP.exe */
+ QUOTENAME(DB_NAME())+ '.' /* Current Database */
+ QUOTENAME(SCHEMA_NAME(SCHEMA_ID))+'.'
+ QUOTENAME(name)
+ ' out D:\BCP\' /* Path where BCP out files will be stored */
+ REPLACE(SCHEMA_NAME(schema_id),' ','') + '_'
+ REPLACE(name,' ','')
+ '.dat -T -E -SServerName\Instance -n' /* ServerName, -E will take care of Identity, -n is for Native Format */
from sys.tables
where is_ms_shipped = 0 and name <> 'sysdiagrams' /* sysdiagrams is classified my MS as UserTable and we dont want it */
/*and schema_name(schema_id) <> 'unwantedschema' */ /* Optional to exclude any schema */
order by schema_name(schema_id)
Ejecute el archivo bat que generará los archivos .dat en la carpeta que ha especificado.
Ejecute la secuencia de comandos siguiente en el servidor de destino con SSMS en modo de texto nuevamente.
--- Execute this on the destination server.database from SSMS.
--- Make sure the change the @Destdbname and the bcp out path as per your environment.
declare @Destdbname sysname
set @Destdbname = 'destinationDB' /* Destination Database Name where you want to Bulk Insert in */
select 'BULK INSERT '
/*Remember Tables must be present on destination database */
+ QUOTENAME(@Destdbname) + '.'
+ QUOTENAME(SCHEMA_NAME(SCHEMA_ID))
+ '.' + QUOTENAME(name)
+ ' from ''D:\BCP\' /* Change here for bcp out path */
+ REPLACE(SCHEMA_NAME(schema_id), ' ', '') + '_' + REPLACE(name, ' ', '')
+ '.dat'' with ( KEEPIDENTITY, DATAFILETYPE = ''native'', TABLOCK )'
+ char(10)
+ 'print ''Bulk insert for ' + REPLACE(SCHEMA_NAME(schema_id), ' ', '') + '_' + REPLACE(name, ' ', '') + ' is done... '''
+ char(10) + 'go'
from sys.tables
where is_ms_shipped = 0
and name <> 'sysdiagrams' /* sysdiagrams is classified my MS as UserTable and we dont want it */
and schema_name(schema_id) <> 'unwantedschema' /* Optional to exclude any schema */
order by schema_name(schema_id)
Ejecute la salida utilizando SSMS para insertar datos nuevamente en las tablas.
Este es un método bcp muy rápido, ya que utiliza el modo nativo.
Some SSIDs and linked servers didn't go across properly
. Los servidores vinculados deben ser programados manualmente. Los SSID se pueden probar utilizando sp_helprevlogin. Los trabajos de SQLAgent, los paquetes de ssis, etc., se deben mover según sus necesidades. El objetivo de este método es obtener los datos lo más rápido posible cuando esté degradando o fusionando 2 bases de datos.
No, no puedes retroceder, solo avanzar. Puede crear una base de datos vacía en 2008 y luego usar el asistente Generar guiones en Management Studio para guiar el esquema y los datos (o herramientas de comparación de terceros de Red Gate y otros). Asegúrese de establecer la versión de destino correcta como 2008, y tendrá que desarrollar cosas incompatibles (por ejemplo, DESPLAZAMIENTO o FORMATO) que podría haber utilizado en 2012.
No hay una forma compatible de hacerlo porque SQL Server no permite este tipo de compatibilidad.
Lo que puedes hacer es
restaurar la base de datos en SQL 2012
generar scripts para objetos y datos
Si no tiene SQL Server 2012, puede usar herramientas de terceros para leer copias de seguridad y extraer datos y estructura.
En este caso, simplemente cree una base de datos vacía en SQL 2008 y use herramientas como ApexSQL Diff y ApexSQL Data Diff para sincronizar objetos y datos. También puede encontrarlos en otros proveedores importantes, como Red-Gate o Idera.