Por lo general, cuando comenzamos la copia de seguridad, no permitimos que los cambios se confirmen o la base de datos no será accesible. Quiero decir que la base de datos estará en modo de usuario único, pero quiero iniciar la copia de seguridad y liberar la base de datos para su uso. Además, una vez que comience la copia de seguridad, no quiero que los cambios en curso se escriban en el archivo de copia de seguridad. Quiero saber cómo puedo lograr esto en Microsoft SQL Server 2012. Por favor, ayúdenme.
Bueno, déjame explicarte mi problema primero. Actualmente estoy configurando la base de datos en modo de usuario único hasta que se complete la copia de seguridad. Este modo servirá a mi propósito de evitar los cambios de datos cuando la copia de seguridad esté en progreso. Pero mi aplicación está vinculada con las múltiples bases de datos (cada una de las bases de datos están interconectadas entre sí y hay varios dbs que se siguen creando mensualmente). Por lo tanto, hacer una copia de seguridad de todas estas bases de datos se ha convertido en un proceso tedioso y, lo que es más importante, tengo que mantener a los usuarios fuera del sistema cuando la copia de seguridad está en curso.
Así que estoy buscando un mecanismo de respaldo que cumpla con los requisitos mencionados a continuación.
- Inicie la copia de seguridad de todos los dbs a la vez y libere el db para su uso.
- Como las bases de datos están interconectadas entre sí, quiero mantener la consistencia de los datos en los archivos de respaldo. Entonces, debido a este requisito de consistencia de datos, no quiero que los cambios continuos se confirmen en mi archivo de copia de seguridad.
Todo lo que quiero es: copia de seguridad de todos los dbs en un momento dado.
fuente
Respuestas:
Supongo que su tarea es crear un conjunto de copias de seguridad donde pueda restaurarlas a un único punto estático (sin transacciones abiertas) (todo sincronizado). Similar a lo que un punto de inactividad hará por usted en DB2. Lamentablemente, no hay nada en SQL Server que haga exactamente eso. Sin embargo, suponiendo que sus bases de datos estén en modo de recuperación COMPLETA, puede hacer algo similar.
Puede crear una sola
MARKED
transacción en todas las bases de datos a la vez . Luego, realiza una copia de seguridad del registro de transacciones de cada base de datos. Suponiendo que esté al día con sus copias de seguridad de registros (lo que debería ser de todos modos), las copias de seguridad de registros no toman mucho tiempo. Y no hay necesidad de evitar que alguien esté en el sistema (excepto tal vez lo suficiente como para que pueda crear su transacción marcada).En este punto, si necesita hacer una restauración, haga una
RESTORE STOPBEFOREMARK
en cada una de sus bases de datos. Esto restaurará todas las bases de datos al mismo punto (según su transacción). Nota: También hay un STOPATMARK si desea incluir esa transacción.Si quieres un ejemplo, tengo uno en el enlace de arriba junto con bastante lectura adicional.
Me doy cuenta de que esto no responde exactamente a su pregunta, pero espero que resuelva su problema.
fuente
Su pregunta es similar a la que he respondido: ¿ Hacer copias de seguridad y restaurar 10-20 bases de datos de SQL Server a un estado ~ sincrónico?
Suponiendo que su modelo de recuperación de la base de datos esté COMPLETO, debe realizar una copia de seguridad completa y luego usar las transacciones marcadas .
Vamos a desacreditar tus mitos ...
De los mitos de respaldo (le recomendamos encarecidamente que lea todos los mitos de respaldo) :
Las transacciones marcadas lo ayudarán a realizar copias de seguridad de LOG consistentes y podrá restaurarlas utilizando
RESTORE ... WITH STOPBEFOREMARK = '<mark_name>'
Recuerde que las transacciones marcadas para todas las bases de datos en la instancia también se registran en la
dbo.logmarkhistory
tabla de laMSDB
base de datos.fuente
para más detalles: https://blogs.technet.microsoft.com/letsdothis/2013/11/06/backup-multiple-sql-databases-in-a-single-swoop/
fuente