Tengo una web que llama a un
BD SQL2005. He encontrado en vuestra web unas sintaxis que funcionan de
maravilla:
RESTORE VERIFYONLY FROM DISK ='C:\mibase.bak'
GO
RESTORE DATABASE servei_estudis FROM DISK ='C:\mibase.bak'
GO
Una vez ejecutadas, el restore lo hace completo y correcto, pero con un
inconveniente, pierdo el User que utilizo en el DNS dentro del SQL 2005.
Existe alguna forma de restore un BD SQL 2005 a partir de sintaxis y que
no pierda el User?
Muchas gracias de antemano.
Comentarios
Hola Jordi, como estás, si no hay problema en ayudarte, pasemos detallar el inconveniente:
Al realizar un restore de base de datos, SQL Server, te restorea las tablas de sistema también (sysusers) con todos los usuarios definidos.
Puede estar sucediendo lo siguiente:
1) Huerfano el usuario, al tratarse de una cuenta standard y el restore se realiza en otro motor de base de datos.
2) Huerfano el usuario, al no estar defino en la master database.
3) Huerfano el usuario, al tratarse un usuario trusted (windows) y el mismo fue regeneardo en el dominio o AD.
Te paso soluciones que se encuentran en ntra sitio.
http://www.todosql.com/blog/200807/reportar-usuarios-huerfanos-sql-serve...
http://www.todosql.com/blog/200706/usuarios-huerfanos-en-sql-server
Espero tus comentarios.
Jordi, te recomiendo lo siguiente:
El backup de la base debes realizarlo de la siguiente manera:
BACKUP DATABASE servei_estudis TO DISK = 'C:\servei_estudis.bak' WITH INIT
De esta manera guardas siempre el último backup realizado y para restorearlo solo tiene la data del último resguardo.
Y el restore sí te va a funcionar como lo estabas haciendo:
RESTORE VERIFYONLY FROM DISK ='C:\servei_estudis.bak'
GO
RESTORE DATABASE servei_estudis FROM DISK ='C:\servei_estudis.bak'
GO
Jordi, te recomiendo lo siguiente:
El backup de la base debes realizarlo de la siguiente manera:
BACKUP DATABASE servei_estudis TO DISK = 'C:\mibase.bak' WITH INIT
De esta manera guardas siempre el último backup realizado y para restorearlo solo tiene la data del último resguardo.
Y el restore sí te va a funcionar como lo estabas haciendo:
RESTORE VERIFYONLY FROM DISK ='C:\mibase.bak'
GO
RESTORE DATABASE servei_estudis FROM DISK ='C:\mibase.bak'
GO
Perfecto, lo he probado y lo hace perfecto. Una pregunta, me gustaria ejecutar el restore que me has pasado, de una manera automatica. Sabes si se puede hacer un .bat que ejecute esta sql? Es que me gustaria hacerlo automáticamente cada semana.
Si se puede hacer, la solución pueden ser:
1) Creamos un archivo .cmd y agregamos la siguiente línea:
sqlcmd -E -iC:\ScriptBackup.SQL -oC:\SalidaBackupSQL -SNombreServerSQL.
(reemplaza entrada,salida y nombre del server por lo que tienes en producción)
Luego lo guardas y lo ejecutas por medio de las tareas programadas del OS.
Abrazo virtual.
Hola Juan,
bueno, gracias por todo, con el comando cmd que me has pasado funciona de maravilla. Este apartado espero que ayude a otros que esten en una situación como la mia.
Repito, muchas gracias por todo y por la dedicación que me has dado sin animo de lucro y que me a sacado de un apuro.
Un abrazo virtual y nos vemos virtualmente en la próxima meta!!
jordi.