Compartir vía


Instantáneas de base de datos (SQL Server)

Se aplica a:SQL Server

Una instantánea de base de datos es una vista estática de solo lectura de una base de datos de SQL Server (la base de datos de origen). Es transaccionalmente coherente con la base de datos de origen a partir de la creación de la instantánea y siempre reside en la misma instancia del servidor que su base de datos de origen. Aunque las instantáneas de base de datos proporcionan una vista de solo lectura de los datos que se encuentran en el mismo estado que cuando se creó la instantánea, el tamaño del archivo de instantáneas crece a medida que se realizan cambios en la base de datos de origen.

Aunque las instantáneas de base de datos pueden ser beneficiosas durante las actualizaciones de esquema principales y permitir la reversión a un estado anterior, es fundamental comprender que las instantáneas no reemplazan la necesidad de copias de seguridad normales. No puede realizar copias de seguridad ni restaurar instantáneas de base de datos, lo que significa que deben usarse con una estrategia sólida de copia de seguridad para garantizar la protección y recuperación de datos si hay pérdida de datos o daños.

Las instantáneas de base de datos se crean con la sintaxis T-SQL CREATE DATABASE mediante la sintaxis AS SNAPSHOT OF.

En una determinada base de datos de origen pueden existir varias instantáneas. Cada instantánea de base de datos persiste hasta que el propietario de la base de datos la quita explícitamente.

Nota:

Las instantáneas de bases de datos no están relacionadas con las copias de seguridad de instantáneas, las copias de seguridad de instantáneas Transact-SQL, el aislamiento de instantáneas de transacciones o la replicación de instantáneas.

Información general sobre características

Las instantáneas de bases de datos operan a nivel de página de datos. Antes de modificar por primera vez una página de la base de datos de origen, la página original se copia de la base de datos de origen a la instantánea. La instantánea almacena la página original y conserva los registros de datos en el estado en que se encontraban cuando se creó la instantánea. El mismo proceso se repite por cada página que se va a modificar por primera vez. Para el usuario, una instantánea de base de datos no parece cambiar nunca porque las operaciones de lectura de una instantánea de base de datos siempre acceden a las páginas de datos originales, independientemente de dónde se encuentren.

La instantánea almacena las páginas originales que se han copiado utilizando uno o más archivos dispersos. Inicialmente, un archivo disperso es un archivo vacío que no contiene datos de usuario y aún no se ha asignado espacio en disco para los datos del usuario. El tamaño del archivo crece a medida que se actualizan más páginas en la base de datos de origen. En la siguiente ilustración se muestran los efectos de dos patrones de actualización en contraste respecto del tamaño de una instantánea. El patrón de actualización A refleja un entorno en el que solo el 30 por ciento de las páginas originales se actualizan durante la vida de la instantánea. El patrón de actualización B refleja un entorno en el que el 80 por ciento de las páginas originales se actualizan durante la vida de la instantánea.

Diagrama que muestra patrones de actualización alternativos y tamaño de instantánea.

Beneficios

  • Las instantáneas se pueden usar para crear informes.

    • Los clientes pueden consultar una instantánea de base de datos, lo que ayuda a escribir informes basados en los datos cuando se crea la instantánea.
  • Mantenimiento de los datos históricos para la creación de informes.

    • Una instantánea puede extender el acceso de usuario a los datos a partir de un momento determinado. Por ejemplo, puede crear una instantánea de base de datos para informes posteriores al final de un período determinado (por ejemplo, un trimestre financiero). A continuación, podrá ejecutar informes de final de período basándose en la instantánea. Si el espacio en disco lo permite, también puede mantener instantáneas de fin de período indefinidamente, lo que permite realizar consultas sobre los resultados de estos períodos, por ejemplo, para investigar el rendimiento de la organización.
  • El uso de una base de datos duplicada, mantenida con fines de disponibilidad, para desviar la carga de la generación de informes.

    • La utilización de instantáneas de base de datos con creación de reflejo de la base de datos permite que los datos del servidor reflejado estén disponibles para la realización de informes. Además, la ejecución de consultas en la base de datos reflejada puede liberar recursos para el servidor principal. Para obtener más información, vea Creación de reflejo e instantáneas de la base de datos (SQL Server).
  • Protección de datos contra errores administrativos.

  • Si se produce un error de usuario en una base de datos de origen, puede revertirlo a su estado cuando se crea una instantánea de base de datos. La pérdida de datos se limita a las actualizaciones de la base de datos desde la creación de la instantánea.

    • Por ejemplo, antes de realizar actualizaciones principales, como una actualización masiva o un cambio de esquema, cree una instantánea de base de datos en la base de datos para proteger los datos. Si comete un error, podrá utilizar la instantánea para la recuperación devolviendo la base de datos al estado en el que estaba cuando se realizó la instantánea. La reversión es más rápida que la restauración desde una copia de seguridad; sin embargo, no puede avanzar después.

      Importante

      La reversión no funciona en bases de datos sin conexión o dañadas. Por lo tanto, las copias de seguridad periódicas y las pruebas del plan de restauración son necesarias para proteger una base de datos.

      Nota:

      Las instantáneas de base de datos dependen de la base de datos de origen. Por lo tanto, el uso de instantáneas para revertir una base de datos no es un sustituto de la estrategia de copia de seguridad y restauración. Resulta esencial realizar todas las copias de seguridad programadas. Si debe restaurar la base de datos de origen al punto en el que creó una instantánea de base de datos, implemente una directiva de copia de seguridad que le permita hacerlo.

  • Protección de datos contra errores por parte de los usuarios.

  • Al crear instantáneas de base de datos con regularidad, puede mitigar el impacto de un error de usuario importante, como una tabla eliminada. Para obtener una protección superior, puede crear una serie de instantáneas de base de datos que abarquen suficiente tiempo como para reconocer y responder a la mayoría de los errores cometidos por los usuarios. Por ejemplo, en función de los recursos de disco, es posible que mantenga de 6 a 12 instantáneas graduales que abarquen un intervalo de 24 horas. A continuación, cada vez que se cree una nueva instantánea, se podrá eliminar la más antigua.

    • Para recuperarse de un error de usuario, puede devolver la base de datos al estado en el que se encontraba en el momento en el que se realizó la instantánea inmediatamente anterior al error. La reversión es potencialmente mucho más rápida que restaurar desde una copia de seguridad; sin embargo, no se puede avanzar posteriormente.

    • Como alternativa, puede reconstruir manualmente una tabla quitada u otros datos perdidos a partir de la información de una instantánea. Por ejemplo, podría copiar masivamente los datos de la instantánea en la base de datos y luego combinarlos manualmente.

      Nota:

      Los motivos para utilizar instantáneas de base de datos determinan cuántas instantáneas simultáneas se necesitan en una base de datos, la frecuencia con la que se debe crear cada nueva instantánea y el tiempo durante el cual se deben conservar.

  • Administrar una base de datos de prueba

    • En un entorno de prueba, puede ser útil que la base de datos contenga datos idénticos al principio de cada ronda de pruebas al ejecutar repetidamente un protocolo de prueba. Antes de ejecutar la primera ronda, un desarrollador de aplicaciones o evaluador puede crear una instantánea de la base de datos de prueba. Después de cada serie de pruebas, puede devolver la base de datos rápidamente a su estado anterior revirtiendo la instantánea de base de datos.

Términos y definiciones

Las instantáneas de base de datos en SQL Server implican varios términos y definiciones clave. Una instantánea de base de datos es una vista estática de solo lectura de una base de datos (denominada base de datos de origen) en un momento dado específico. La base de datos de origen es la base de datos original en la que se basa la instantánea, y debe permanecer en línea y accesible para que la instantánea sea utilizable. Los archivos dispersos almacenan las páginas originales de la base de datos de origen que han sido modificadas desde que se creó la instantánea. Estos archivos están inicialmente vacíos y crecen a medida que se producen cambios en la base de datos de origen. Comprender estos términos es esencial para administrar y usar instantáneas de base de datos de forma eficaz en SQL Server.

Instantáneas de base de datos

Una vista estática, coherente y de solo lectura desde el punto de vista transaccional de una base de datos (la base de datos de origen).

Base de datos de origen

En el caso de una instantánea de base de datos, la base de datos en la que se creó la instantánea. Las instantáneas de base de datos dependen de la base de datos de origen. Las instantáneas de base de datos deben residir en la misma instancia de servidor que la base de datos. Además, si esa base de datos deja de estar disponible por cualquier motivo, sus instantáneas no estarán disponibles.

Archivos dispersos

El sistema de archivos NTFS proporciona un archivo que requiere mucho menos espacio en disco de lo que, de lo contrario, sería necesario. Los archivos dispersos se usan para almacenar páginas copiadas en una instantánea de base de datos. Cuando se crea por primera vez, un archivo disperso ocupa poco espacio en disco. Mientras los datos se escriben en una instantánea de base de datos, NTFS asigna espacio de disco gradualmente al archivo disperso correspondiente.

Prerrequisitos

La base de datos de origen, que puede usar cualquier modelo de recuperación, debe cumplir los siguientes requisitos previos:

  • La instancia del servidor debe ejecutarse en una edición de SQL Server que admita instantáneas de base de datos.

  • La base de datos de origen debe estar en línea a menos que sea una base de datos reflejada en una sesión de reflejo de bases de datos.

  • Puede crear una instantánea de base de datos en un grupo de disponibilidad en cualquier base de datos principal o secundaria. El rol de réplica debe ser PRIMARY o SECONDARY y no debe encontrarse en el estado RESOLVING.

  • Se recomienda que el estado de sincronización de la base de datos sea SYNCHRONIZING o SYNCHRONIZED cuando se crea una instantánea de base de datos. Sin embargo, se pueden crear instantáneas de la base de datos cuando el estado es NOT SYNCHRONIZING.

  • Para crear la instantánea de una base de datos en una base de datos reflejada, la base de datos debe hallarse en estado de reflejo SYNCHRONIZED.

  • La base de datos de origen no se puede configurar como una base de datos compartida escalable.

  • Antes de SQL Server 2019, la base de datos de origen no pudo contener un grupo de archivos MEMORY_OPTIMIZED_DATA. La compatibilidad con las instantáneas de base de datos en memoria se agregó en SQL Server 2019.

  • Todos los modelos de recuperación admiten instantáneas de base de datos.

Limitaciones de la base de datos de origen

En tanto exista una instantánea de base de datos, existirán las siguientes limitaciones de la base de datos de origen de la instantánea:

  • La base de datos no se puede eliminar, desvincular ni restaurar.

  • La copia de seguridad de la base de datos de origen suele funcionar, pero no se ve afectada por las instantáneas de base de datos.

  • El rendimiento se reduce debido al aumento de las operaciones de E/S en la base de datos de origen, que resulta de una operación de copia en escritura a la instantánea cada vez que se actualiza una página.

  • Los archivos no se pueden quitar de la base de datos de origen ni de ninguna instantánea.

Limitaciones de las instantáneas de base de datos

Las instantáneas de base de datos dependen de la base de datos de origen y no protegen frente a errores de disco ni daños. Por lo tanto, aunque pueden ser útiles para la creación de informes o durante los cambios de esquema, deben complementar, no reemplazar, prácticas de copia de seguridad normales. Si necesita restaurar la base de datos de origen al punto en el que creó una instantánea de base de datos, implemente una directiva de copia de seguridad que le permita hacerlo.

Las siguientes limitaciones son aplicables a las instantáneas de base de datos:

  • Una instantánea de base de datos debe crearse en la misma instancia de servidor que la base de datos de origen.

  • Las instantáneas de base de datos siempre trabajan en una base de datos completa.

  • Las instantáneas de base de datos dependen de la base de datos de origen y no son almacenamiento redundante. No protegen contra errores de disco ni contra otros tipos de daños. Por lo tanto, el uso de instantáneas para revertir una base de datos no sustituye a la estrategia de copia de seguridad y restauración. Resulta esencial realizar todas las copias de seguridad programadas. Si debe restaurar la base de datos de origen al punto en el que creó una instantánea de base de datos, implemente una directiva de copia de seguridad que le permita hacerlo.

Cuando una página que se actualiza en la base de datos de origen se inserta en una instantánea, si la instantánea se queda sin espacio en disco o encuentra algún otro error, se sospecha y debe eliminarse.

  • Las instantáneas son de solo lectura. Puesto que son de solo lectura, no se pueden actualizar. Por lo tanto, no se espera que las instantáneas de base de datos sean viables después de una actualización.

  • Las instantáneas de base de datos model, master y tempdb están prohibidas.

  • No se puede cambiar ninguna de las especificaciones de los archivos de instantáneas de base de datos.

  • No se pueden quitar archivos de una instantánea de base de datos.

  • No se pueden realizar copias de seguridad ni restaurar instantáneas de base de datos.

  • No se pueden adjuntar ni desvincular instantáneas de base de datos.

  • No se pueden crear instantáneas de base de datos en el sistema de archivos FAT32 ni en las particiones RAW. El sistema de archivos NTFS proporciona los archivos dispersos usados por las instantáneas de base de datos.

  • La indexación de texto completo no se admite en instantáneas de base de datos. Los catálogos de texto completo no se propagan desde la base de datos de origen.

  • Las instantáneas de base de datos heredan las restricciones de seguridad de la base de datos de origen al crear la instantánea. Dado que las instantáneas son de solo lectura, los permisos heredados no se pueden cambiar y los cambios de permisos realizados en el origen no se reflejarán en las instantáneas existentes.

  • Las instantáneas siempre reflejan el estado de los grupos de archivos al crear la instantánea: los grupos de archivos en línea permanecen en línea y los grupos de archivos sin conexión permanecen sin conexión. Para obtener más información, consulte "Instantáneas de base de datos con grupos de archivos sin conexión" más adelante en este artículo.

  • Si una base de datos de origen se convierte en RECOVERY_PENDING, es posible que sus instantáneas no sean accesibles. Sin embargo, después de resolver el problema en la base de datos de origen, sus instantáneas deben volver a estar disponibles.

  • La reversión no se admite en ningún archivo comprimido NTFS o de solo lectura NTFS en la base de datos. Se produce un error en los intentos de revertir una base de datos que contenga cualquiera de estos tipos de grupos de archivos.

  • En una configuración de trasvase de registros, las instantáneas de base de datos solo se pueden crear en la base de datos principal, no en una secundaria. Supongamos que cambia los roles entre las instancias del servidor principal y secundario. En ese caso, debe eliminar todas las instantáneas de la base de datos antes de configurar la base de datos principal como secundaria.

  • Una instantánea de base de datos no se puede configurar como una base de datos compartida escalable.

Las instantáneas de base de datos no admiten grupos de archivos FILESTREAM. Si existen grupos de archivos FILESTREAM en una base de datos de origen, se marcan como sin conexión en sus instantáneas de la base de datos, y éstas no se pueden utilizar para revertir la base de datos.

Nota:

Una instrucción SELECT que se ejecuta en una instantánea de base de datos no debe especificar una columna FILESTREAM; de lo contrario, se devolverá el mensaje de error siguiente: Could not continue scan with NOLOCK due to data movement.

  • Cuando faltan las estadísticas de una instantánea de solo lectura o son obsoletas, el motor de base de datos crea y mantiene estadísticas temporales en tempdb. Consulte Estadísticas para obtener más información.

Espacio en disco

Las instantáneas de base de datos ocupan espacio en disco. Si una instantánea de base de datos se queda sin espacio en disco, se marca como sospechosa y debe quitarse. (Sin embargo, la base de datos de origen no se ve afectada; las acciones en ella continúan normalmente).

Sin embargo, las instantáneas son muy eficientes en el uso del espacio en comparación con una copia completa de una base de datos. Una instantánea solo requiere suficiente espacio para las páginas que cambian durante su duración. Por lo general, las instantáneas se conservan durante un tiempo limitado, por lo que su tamaño no es un problema importante.

Sin embargo, cuanto más tiempo mantenga una instantánea, más probable es que use espacio disponible. El tamaño máximo al que puede crecer un archivo disperso es el tamaño de archivo de base de datos de origen correspondiente en el momento de la creación de la instantánea. Se debe eliminar (quitar) una instantánea de base de datos si se queda sin espacio en disco.

Nota:

Una instantánea de base de datos consume casi los mismos recursos que una base de datos, salvo el espacio de archivo.

Grupos de archivos sin conexión

Los grupos de archivos sin conexión de la base de datos de origen afectan a las instantáneas de base de datos al intentar llevar a cabo una de las siguientes acciones:

  • Cree una instantánea.

    • Si una base de datos de origen tiene uno o varios grupos de archivos sin conexión, la creación de la instantánea tiene éxito con los grupos de archivos sin conexión. Los archivos dispersos no se crean para los grupos de archivos sin conexión.
  • Poner sin conexión un grupo de archivos

    • Puede poner sin conexión un archivo en la base de datos de origen. Sin embargo, el grupo de archivos permanece en línea en las instantáneas de base de datos si estaba en línea al crear la instantánea. Si los datos consultados han cambiado desde la creación de la instantánea, se puede acceder a la página de datos original en la instantánea. Sin embargo, las consultas que utilicen la instantánea para tener acceso a los datos no modificados del grupo de archivos es probable que den errores de entrada/salida (E/S).
  • Poner en línea un grupo de archivos

    • No se puede poner un grupo de archivos en línea en una base de datos que tenga instantáneas de base de datos. Si un grupo de archivos está sin conexión en el momento de la creación de instantáneas o se deja sin conexión mientras existe una instantánea de base de datos, permanece sin conexión. Esto se debe a que devolver un archivo en línea implica restaurarlo, lo que no es posible si existe una instantánea de base de datos en la base de datos.
  • Revertir la base de datos de origen a la instantánea

    • Revertir una base de datos de origen a una instantánea de base de datos requiere que todos los grupos de archivos estén en línea, excepto los que estaban sin conexión cuando se creó la instantánea.