Restaurar copia seguridad con ubicación distinta a la original

05/12/2007 - 13:01 por Jesús M.G. | Informe spam
Hola, esta pregunta, ya la hice en el grupo de visual basic 6 y nadie supo darme respuesta, por lo que aunque es código visual basic, la hago aqui para ver si hay más suerte:

Restauro una copia de seguridad de la siguiente forma:


Dim oRestore As SQLDMO.Restore

Set oRestore = New SQLDMO.Restore
Set oRestoreEvent = oRestore

oRestore.DataBase = gDatabaseName '// Nombre base datos

oRestore.Files = sNombreFicheroBackup '// ficherocopia.bak

Screen.MousePointer = vbHourglass

oRestore.SQLRestore gSQLServer

Screen.MousePointer = vbDefault

Set oRestoreEvent = Nothing
Set oRestore = Nothing


Todo funciona perfectamente, pero si restauro una copia de seguridad de otro servidor SQL que tiene los archivos lógicos de la base de datos base_dat.mdf y base_log.ldf en otra ruta distinta a donde están los de mi servidor, me da el siguiente error:

Nº-2147216399 [Microsoft][ODBC SQL Server Driver][SQL Server]Error de activación de dispositivo. El nombre de archivo físico 'D:\Microsoft SQL Server\MSSQL\data\poliza2000_Data.MDF' puede ser incorrecto.
[Microsoft][ODBC SQL Server Driver][SQL Server]El archivo 'poliza2000_Data' no se puede restaurar en 'D:\Microsoft SQL Server\MSSQL\data\poliza2000_Data.MDF'. Utilice WITH MOVE para identificar una ubicación válida para el archivo.
[Microsoft][ODBC SQL Server Driver][SQL Server]Error de activación de dispositivo. El nombre de archivo físico 'D:\Microsoft SQL Server\MSSQL\data\poliza2000_Log.LDF' puede ser incorrecto.
[Microsoft][ODBC SQL Server Driver][SQL Server]El archivo 'poliza2000_Log' no se puede restaurar en 'D:\Microsoft SQL Server\MSSQL\data\poliza2000_Log.LDF'. Utilice WITH MOVE para identificar una ubicación válida para el archivo.
[Microsoft][ODBC SQL Server Driver][SQL Server]Fin anómalo de RESTORE DATABASE.



Investigando un poco y encontrado la propiedad "RelocateFiles" si le incluyo antes de la operación de restore esto:

oRestore.RelocateFiles = "[poliza2000]" + "," + "[C:\PolizaCS\Bases\MSSQL$POLIZA\Data\poliza2000dat.mdf]," + _
"[poliza2000_log]" + "," + "[C:\PolizaCS\Bases\MSSQL$POLIZA\Data\poliza2000log.ldf]"


Me produce el siguiente error:

-2147218270 [Microsoft][ODBC SQL Server Driver][SQL Server]El archivo lógico 'poliza2000' no es parte de la base de datos 'poliza2000'. Use RESTORE FILELISTONLY para enumerar los nombres de los archivos lógicos.
[Microsoft][ODBC SQL Server Driver][SQL Server]Fin anómalo de RESTORE DATABASE

¿alguien sabe como solucionar este problema?

Gracias


P.D. Se que tengo una forma más fácil de restaurar la base de datos, con cnn.execute "RESTORE DATABASE " pero de esta forma me deja el sistema bloqueado mientras dura el proceso de restauración, y de la forma que intento hacerlo yo con SQL DMO me permite poner una barra de progreso y no se queda pillado el sistema.

Jesús Morales González
Almuñécar (Granada) España
Mesenger: jemogoQUITA@ESTOhotmail.com (sólo para messenger)
 

Leer las respuestas

#1 Maxi
05/12/2007 - 14:20 | Informe spam
Jesus, nunca probe de hacerlo con DMO pero en la clase deberia usted tener
una propiedad donde le pueda indicar el destino de los archivos


-
Microsoft M.V.P en SQLServer
SQLTotal Consulting - Servicios en SQLServer
Email:
"Jesús M.G." escribió en el mensaje
news:
Hola, esta pregunta, ya la hice en el grupo de visual basic 6 y nadie supo
darme respuesta, por lo que aunque es código visual basic, la hago aqui para
ver si hay más suerte:

Restauro una copia de seguridad de la siguiente forma:


Dim oRestore As SQLDMO.Restore

Set oRestore = New SQLDMO.Restore
Set oRestoreEvent = oRestore

oRestore.DataBase = gDatabaseName '// Nombre base datos

oRestore.Files = sNombreFicheroBackup '// ficherocopia.bak

Screen.MousePointer = vbHourglass

oRestore.SQLRestore gSQLServer

Screen.MousePointer = vbDefault

Set oRestoreEvent = Nothing
Set oRestore = Nothing


Todo funciona perfectamente, pero si restauro una copia de seguridad de otro
servidor SQL que tiene los archivos lógicos de la base de datos base_dat.mdf
y base_log.ldf en otra ruta distinta a donde están los de mi servidor, me da
el siguiente error:

Nº-2147216399 [Microsoft][ODBC SQL Server Driver][SQL Server]Error de
activación de dispositivo. El nombre de archivo físico 'D:\Microsoft SQL
Server\MSSQL\data\poliza2000_Data.MDF' puede ser incorrecto.
[Microsoft][ODBC SQL Server Driver][SQL Server]El archivo 'poliza2000_Data'
no se puede restaurar en 'D:\Microsoft SQL
Server\MSSQL\data\poliza2000_Data.MDF'. Utilice WITH MOVE para identificar
una ubicación válida para el archivo.
[Microsoft][ODBC SQL Server Driver][SQL Server]Error de activación de
dispositivo. El nombre de archivo físico 'D:\Microsoft SQL
Server\MSSQL\data\poliza2000_Log.LDF' puede ser incorrecto.
[Microsoft][ODBC SQL Server Driver][SQL Server]El archivo 'poliza2000_Log'
no se puede restaurar en 'D:\Microsoft SQL
Server\MSSQL\data\poliza2000_Log.LDF'. Utilice WITH MOVE para identificar
una ubicación válida para el archivo.
[Microsoft][ODBC SQL Server Driver][SQL Server]Fin anómalo de RESTORE
DATABASE.



Investigando un poco y encontrado la propiedad "RelocateFiles" si le incluyo
antes de la operación de restore esto:

oRestore.RelocateFiles = "[poliza2000]" + "," +
"[C:\PolizaCS\Bases\MSSQL$POLIZA\Data\poliza2000dat.mdf]," + _
"[poliza2000_log]" + "," +
"[C:\PolizaCS\Bases\MSSQL$POLIZA\Data\poliza2000log.ldf]"


Me produce el siguiente error:

-2147218270 [Microsoft][ODBC SQL Server Driver][SQL Server]El archivo lógico
'poliza2000' no es parte de la base de datos 'poliza2000'. Use RESTORE
FILELISTONLY para enumerar los nombres de los archivos lógicos.
[Microsoft][ODBC SQL Server Driver][SQL Server]Fin anómalo de RESTORE
DATABASE

¿alguien sabe como solucionar este problema?

Gracias


P.D. Se que tengo una forma más fácil de restaurar la base de datos, con
cnn.execute "RESTORE DATABASE " pero de esta forma me deja el sistema
bloqueado mientras dura el proceso de restauración, y de la forma que
intento hacerlo yo con SQL DMO me permite poner una barra de progreso y no
se queda pillado el sistema.

Jesús Morales González
Almuñécar (Granada) España
Mesenger: (sólo para messenger)

Preguntas similares