Crear una instantánea de base de datos (Transact-SQL)

El único modo de crear una instantánea de base de datos de SQL Server consiste en usar Transact-SQL. SQL Server Management Studio no admite la creación de instantáneas de base de datos.

  • **Antes de empezar: **

    Requisitos previos

    Seguridad

    Procedimiento recomendado: asignar nombres a las instantáneas de base de datos

  • **Para crear una instantánea de base de datos, mediante: ** Transact-SQL

Antes de empezar

Requisitos previos

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

  • La instancia de servidor debe ejecutar una edición de SQL Server que admita la instantánea de base de datos. Para obtener información acerca de la compatibilidad con las instantáneas de base de datos en SQL Server 2012, vea Características compatibles con las ediciones de SQL Server 2012

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

  • 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 sincronizado.

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

Nota importanteImportante

Para obtener información acerca de otras consideraciones importantes, vea Instantáneas de base de datos (SQL Server).

Recomendaciones

En esta sección se describen los procedimientos recomendados siguientes:

  • Procedimiento recomendado: asignar nombres a las instantáneas de base de datos

  • Procedimiento recomendado: limitar el número de instantáneas de base de datos

  • Procedimiento recomendado: conexiones de clientes con una instantánea de base de datos

Procedimiento recomendado: asignar nombres a las instantáneas de base de datos

Antes de crear instantáneas, es importante pensar cómo asignarles un nombre. Cada instantánea de base de datos necesita un nombre de base de datos único. Para facilitar la administración, el nombre de una instantánea puede incorporar información que identifique la base de datos, por ejemplo:

  • El nombre de la base de datos de origen.

  • Una indicación de que el nuevo nombre es para una instantánea.

  • La fecha y hora de creación de la instantánea, un número de secuencia o cualquier otra información, por ejemplo, la hora del día, para distinguir instantáneas secuenciales en una base de datos dada.

Por ejemplo, piense en una serie de instantáneas de base de datos AdventureWorks2012 . Se crean tres instantáneas diarias a intervalos de 6 horas entre las 06:00 y las 18:00, tomando como base un reloj de 24 horas. Cada instantánea diaria se conserva 24 horas antes de que se quite y sea reemplazada por una nueva instantánea con el mismo nombre. Recuerde que cada nombre de instantánea indica la hora, pero no el día:

AdventureWorks_snapshot_0600
AdventureWorks_snapshot_1200
AdventureWorks_snapshot_1800

Como alternativa, si la hora de creación de estas instantáneas diarias varía cada día, es posible que sea preferible disponer de una convención de nomenclatura menos precisa, por ejemplo:

AdventureWorks_snapshot_morning
AdventureWorks_snapshot_noon
AdventureWorks_snapshot_evening

Procedimiento recomendado: limitar el número de instantáneas de base de datos

La creación de una serie de instantáneas a lo largo del tiempo permite capturar instantáneas secuenciales de la base de datos de origen. Cada instantánea se conserva hasta que se quite de manera explícita. Las instantáneas siguen creciendo a medida que se actualizan las páginas originales, por lo que seguramente querrá ahorrar espacio en el disco eliminando una instantánea más antigua después de crear una nueva instantánea.

[!NOTA]

Si desea volver a una instantánea de base de datos, debe eliminar cualquier otra instantánea de esa base de datos.

Procedimiento recomendado: conexiones de clientes con una instantánea de base de datos

Para usar una instantánea de base de datos, los clientes deben saber dónde encontrarla. Los usuarios pueden leer de una instantánea de base de datos mientras se crea o elimina otra. Sin embargo, si sustituye una nueva instantánea por otra ya existente, debe redirigir a los clientes a la nueva instantánea. Los usuarios pueden conectarse manualmente a una instantánea de base de datos mediante SQL Server Management Studio. Sin embargo, para admitir un entorno de producción, debe crear una solución programática que dirija de un modo transparente a los clientes de escritura de informes a la instantánea de base de datos más reciente de la base de datos.

[Arriba]

Seguridad

Permisos

Todos los usuarios que pueden crear una base de datos pueden crear una instantánea de base de datos; sin embargo, para crear una instantánea de una base de datos reflejada, es necesario ser miembro del rol fijo de servidor sysadmin.

Icono de flecha usado con el vínculo Volver al principio[Arriba]

Cómo crear una instantánea de base de datos (con Transact-SQL)

Para crear una instantánea de base de datos

[!NOTA]

Para obtener un ejemplo de este procedimiento, vea Ejemplos (Transact-SQL), más adelante en esta sección.

  1. Basándose en el tamaño actual de la base de datos de origen, asegúrese de que tiene suficiente espacio en disco para incluir la instantánea de base de datos. El tamaño máximo de una instantánea de base de datos es el tamaño de la base de datos de origen en el momento de la creación de la instantánea. Para obtener más información, vea Ver el tamaño del archivo disperso de una instantánea de base de datos (Transact-SQL).

  2. Emita una instrucción CREATE DATABASE en los archivos que usen la cláusula AS SNAPSHOT OF. Para crear una instantánea, se debe especificar el nombre lógico de cada archivo de la base de datos de origen. La sintaxis es la siguiente:

    CREATE DATABASE database_snapshot_name

        ON

        (

            NAME = logical_file_name,

            FILENAME = 'os_file_name'

        ) [ ,...n ]

        AS SNAPSHOT OF source_database_name

    [;]

    Donde source_database_name es la base de datos de origen, logical_file_name i es el nombre lógico que se usa en SQL Server cuando se hace referencia al archivo, os_file_name es la ruta de acceso y el nombre de archivo que usa el sistema operativo cuando se crea el archivo y database_snapshot_name es el nombre de la instantánea a la que desea revertir la base de datos. Para obtener una descripción completa de esta sintaxis, vea CREATE DATABASE (Transact-SQL).

    [!NOTA]

    Cuando se crea una instantánea de base de datos, no se permite la presencia de archivos de registro, archivos sin conexión, archivos de restauración e inactivos en la instrucción CREATE DATABASE.

Icono de flecha usado con el vínculo Volver al principio[Arriba]

Ejemplos (Transact-SQL)

[!NOTA]

La extensión .ss que se usa en los ejemplos es arbitraria.

Esta sección contiene los siguientes ejemplos:

  • A. Crear una instantánea de la base datos AdventureWorks

  • B. Crear una instantánea de la base datos Sales

A.Crear una instantánea de la base datos AdventureWorks

En este ejemplo se crea una instantánea de base datos AdventureWorks. El nombre de la instantánea, AdventureWorks_dbss_1800, y el nombre de archivo de su archivo disperso, AdventureWorks_data_1800.ss, indican la hora de creación: 6 P.M (1800 horas).

CREATE DATABASE AdventureWorks_dbss1800 ON
( NAME = AdventureWorks_Data, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Data\AdventureWorks_data_1800.ss' )
AS SNAPSHOT OF AdventureWorks;
GO

B.Crear una instantánea de la base datos Sales

En este ejemplo se crea una instantánea de base datos, sales_snapshot1200, en la base de datos Sales. Esta base de datos se creó en el ejemplo "Crear una base de datos con grupos de archivos," en CREATE DATABASE (Transact-SQL).

--Creating sales_snapshot1200 as snapshot of the
--Sales database:
CREATE DATABASE sales_snapshot1200 ON
( NAME = SPri1_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SPri1dat_1200.ss'),
( NAME = SPri2_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SPri2dt_1200.ss'),
( NAME = SGrp1Fi1_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\mssql\data\SG1Fi1dt_1200.ss'),
( NAME = SGrp1Fi2_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SG1Fi2dt_1200.ss'),
( NAME = SGrp2Fi1_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SG2Fi1dt_1200.ss'),
( NAME = SGrp2Fi2_dat, FILENAME = 
'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\data\SG2Fi2dt_1200.ss')
AS SNAPSHOT OF Sales
GO

Icono de flecha usado con el vínculo Volver al principio[Arriba]

Tareas relacionadas

Icono de flecha usado con el vínculo Volver al principio[Arriba]

Vea también

Referencia

CREATE DATABASE (Transact-SQL)

Conceptos

Instantáneas de base de datos (SQL Server)