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