Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
A única maneira de criar um instantâneo de banco de dados do SQL Server é usar o Transact-SQL. O SQL Server Management Studio não oferece suporte à criação de instantâneos de banco de dados.
Pré-requisitos
O banco de dados de origem, que pode usar qualquer modelo de recuperação, deve atender aos seguintes pré-requisitos:
A instância do servidor deve estar executando uma edição do SQL Server que ofereça suporte ao instantâneo do banco de dados. Para obter informações sobre o suporte para instantâneos de banco de dados no SQL Server, consulte Edições e Recursos com Suporte do SQL Server 2022.
O banco de dados de origem deve estar online, a menos que seja um banco de dados espelho dentro de uma sessão de espelhamento de banco de dados.
Para criar um instantâneo de uma base de dados num banco de dados espelhado, a base de dados deve estar no estado de espelhamento sincronizado .
O banco de dados de origem não pode ser configurado como um banco de dados compartilhado escalável.
Antes do SQL Server 2019 (15.x), o banco de dados de origem não podia conter um grupo de arquivos
MEMORY_OPTIMIZED_DATA. O suporte para instantâneos de banco de dados na memória foi adicionado no SQL Server 2019 (15.x).
Importante
Para obter informações sobre outras considerações importantes, consulte Database Snapshots (SQL Server).
Recomendações
Esta seção discute as seguintes práticas recomendadas:
- Práticas recomendadas: nomear instantâneos de banco de dados
- Práticas recomendadas: limitar o número de instantâneos de banco de dados
- Práticas recomendadas: conexões de clientes a um instantâneo de banco de dados
Práticas recomendadas: nomear instantâneos de banco de dados
Antes de criar instantâneos, é importante considerar como nomeá-los. Cada instantâneo de banco de dados requer um nome de banco de dados exclusivo. Para facilitar administrativamente, o nome de um instantâneo pode incorporar informações que identificam o banco de dados, como:
O nome do banco de dados de origem.
Indicação de que o novo nome é para um instantâneo.
A data e hora de criação do instantâneo, um número de sequência ou algumas outras informações, como a hora do dia, para distinguir instantâneos sequenciais em um determinado banco de dados.
Por exemplo, considere uma série de instantâneos para o banco de dados AdventureWorks2025. Três instantâneos diários são criados em intervalos de 6 horas entre 6h e 18h, com base em um relógio de 24 horas. Cada instantâneo diário é mantido por 24 horas antes de ser descartado e substituído por um novo instantâneo com o mesmo nome. Cada nome de instantâneo indica a hora, mas não o dia:
AdventureWorks_snapshot_0600
AdventureWorks_snapshot_1200
AdventureWorks_snapshot_1800
Alternativamente, se o tempo de criação desses instantâneos diários variar de dia para dia, uma convenção de nomenclatura menos precisa pode ser preferível, por exemplo:
AdventureWorks_snapshot_morning
AdventureWorks_snapshot_noon
AdventureWorks_snapshot_evening
Práticas recomendadas: limitar o número de instantâneos do banco de dados
Criar uma série de instantâneos ao longo do tempo captura imagens sequenciais da base de dados de origem. Cada instantâneo persiste até ser explicitamente descartado. Como cada snapshot continuará a crescer à medida que as páginas originais forem atualizadas, convém economizar espaço em disco excluindo um snapshot mais antigo depois de criar um novo snapshot.
Observação
Para reverter para um instantâneo de banco de dados, você precisa excluir quaisquer outros instantâneos desse banco de dados.
Prática recomendada: conexões de cliente com um instantâneo de banco de dados
Para usar um instantâneo de banco de dados, os clientes precisam saber onde encontrá-lo. Os usuários podem ler de um instantâneo de banco de dados enquanto outro está sendo criado ou excluído. No entanto, ao substituir um novo snapshot por um existente, você precisa redirecionar os clientes para o novo snapshot. Os usuários podem se conectar manualmente a um instantâneo de banco de dados com o SQL Server Management Studio ou o Azure Data Studio. No entanto, para dar suporte a um ambiente de produção, você deve criar uma solução programática que direcione de forma transparente os clientes de gravação de relatórios para o instantâneo de banco de dados mais recente do banco de dados.
Permissões
Qualquer utilizador que possa criar uma base de dados pode criar um instantâneo da base de dados; no entanto, para criar um instantâneo de uma mirror base de dados, deve ser membro da função fixa de servidor sysadmin.
Criar um instantâneo de banco de dados usando Transact-SQL
Com base no tamanho atual do banco de dados de origem, verifique se você tem espaço em disco suficiente para armazenar o instantâneo do banco de dados. O tamanho máximo de um instantâneo de banco de dados é o tamanho do banco de dados de origem na criação do instantâneo. Para obter mais informações, consulte Exibir o tamanho do arquivo esparso de um instantâneo de banco de dados (Transact-SQL).
Emita uma declaração
CREATE DATABASEnos arquivos usando a cláusulaAS SNAPSHOT OF. A criação de um instantâneo requer a especificação do nome lógico de cada arquivo de banco de dados do banco de dados de origem. A sintaxe é a seguinte:CREATE DATABASE database_snapshot_name ON ( NAME = logical_file_name , FILENAME = 'os_file_name' ) [ , ...n ] AS SNAPSHOT OF source_database_name [;]Os argumentos são os seguintes:
Argumento Descrição database_snapshot_nameO nome do instantâneo para o qual você deseja reverter o banco de dados. logical_file_nameO nome lógico que o banco de dados de origem usa no SQL Server ao fazer referência ao arquivo. os_file_nameO caminho e o nome do arquivo usados pelo sistema operacional quando você cria o arquivo. source_database_nameO banco de dados de origem. Para obter uma descrição completa dessa sintaxe, consulte CREATE DATABASE (SQL Server Transact-SQL).
Observação
Quando você cria um instantâneo do banco de dados, arquivos de log, arquivos offline, arquivos de restauração e arquivos extintos não são permitidos na instrução
CREATE DATABASE.
Exemplos
A extensão .ss usada nesses exemplos é por conveniência e não é necessária. Em bancos de dados contendo vários arquivos, todos os arquivos devem ser especificados, em conformidade com a sintaxe. Os grupos de arquivos não são especificados.
Um. Criar um instantâneo no banco de dados AdventureWorks
Este exemplo cria um instantâneo de banco de dados no banco de dados AdventureWorks. O nome do instantâneo, AdventureWorks_dbss_1800, e o nome do arquivo de seu arquivo esparso, AdventureWorks_data_1800.ss, indicam o tempo de criação das 18h (1800 horas).
CREATE DATABASE AdventureWorks_dbss1800 ON (
NAME = AdventureWorks,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Data\AdventureWorks_data_1800.ss'
) AS SNAPSHOT OF AdventureWorks;
GO
B. Criar um instantâneo na Base de Dados de Vendas
Este exemplo cria um instantâneo de banco de dados, sales_snapshot1200, no banco de dados Sales, que é o mesmo banco de dados de exemplo de . Crie um banco de dados que tenha grupos de ficheiros em utilizando o CREATE DATABASE.
--Create sales_snapshot1200 as snapshot of the Sales database:
CREATE DATABASE sales_snapshot1200 ON (
NAME = SPri1_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\data\SPri1dat_1200.ss'
),
(
NAME = SPri2_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\data\SPri2dt_1200.ss'
),
(
NAME = SGrp1Fi1_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\mssql\data\SG1Fi1dt_1200.ss'
),
(
NAME = SGrp1Fi2_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\data\SG1Fi2dt_1200.ss'
),
(
NAME = SGrp2Fi1_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\data\SG2Fi1dt_1200.ss'
),
(
NAME = SGrp2Fi2_dat,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\data\SG2Fi2dt_1200.ss'
) AS SNAPSHOT OF Sales;
GO