Compartilhar via


Tutorial: Usar o Armazenamento de Blobs do Azure com o SQL Server

Aplica-se a: SQL Server 2016 (13.x) e versões posteriores

Este tutorial ajuda você a entender como usar o Armazenamento de Blobs do Azure para arquivos de dados e backups no SQL Server 2016 (13.x) e versões posteriores.

O suporte para o Armazenamento de Blobs do Azure no SQL Server foi introduzido no SQL Server 2012 (11.x) Service Pack 1 CU2 e aprimorado em versões posteriores. Para obter uma visão geral da funcionalidade e dos benefícios de usar esse recurso, consulte arquivos de dados do SQL Server no Microsoft Azure.

Este tutorial mostra como trabalhar com arquivos de dados do SQL Server no Armazenamento de Blobs do Azure em várias seções. Cada seção é focada em uma tarefa específica e você deve concluir as seções em sequência. Primeiro, você aprenderá a criar um novo contêiner no Armazenamento de Blobs com uma política de acesso armazenada e uma assinatura de acesso compartilhado. Em seguida, você aprenderá a criar uma credencial do SQL Server para integrar o SQL Server ao Armazenamento de Blobs do Azure. Em seguida, faça backup de um banco de dados no Armazenamento de Blobs e restaure-o em uma máquina virtual do Azure. Em seguida, você usa o backup de log de transações de instantâneo de arquivo do SQL Server para restaurar para um ponto no tempo e para um novo banco de dados. Por fim, o tutorial demonstra o uso de procedimentos e funções armazenados do sistema de metadados para ajudá-lo a entender e trabalhar com backups de instantâneo de arquivo.

Pré-requisitos

Para concluir este tutorial, você deve estar familiarizado com os conceitos de backup e restauração do SQL Server e a sintaxe T-SQL.

Para usar este tutorial, você precisa de uma conta de armazenamento do Azure, sSMS (SQL Server Management Studio), acesso a uma instância do SQL Server local, acesso a uma VM (máquina virtual) do Azure executando uma instância do SQL Server 2016 (13.x) ou versão posterior e um AdventureWorks2025 banco de dados. Além disso, a conta usada para emitir o e BACKUP os RESTORE comandos devem estar na função de banco de dados db_backupoperator com a alteração de qualquer permissão de credencial.

Importante

O SQL Server não dá suporte ao Azure Data Lake Storage. Verifique se o namespace hierárquico não está habilitado na conta de armazenamento usada para este tutorial.

1 – Criar política de acesso armazenado e armazenamento de acesso compartilhado

Nesta seção, você usará um script do Azure PowerShell para criar uma assinatura de acesso compartilhado em um contêiner do Armazenamento de Blobs do Azure usando uma política de acesso armazenada.

Observação

Esse script é escrito usando o Azure PowerShell 5.0.10586.

Uma assinatura de acesso compartilhado é um URI que concede direitos de acesso restritos a contêineres, blobs, filas ou tabelas. Uma política de acesso armazenado fornece um nível extra de controle sobre assinaturas de acesso compartilhado no lado do servidor, incluindo revogação, expiração ou extensão do acesso. Ao usar esse novo aprimoramento, você precisa criar uma política em um contêiner com pelo menos direitos de leitura, gravação e lista.

Você pode criar uma política de acesso armazenado e uma assinatura de acesso compartilhado usando o Azure PowerShell, o SDK de Armazenamento do Azure, a API REST do Azure ou um utilitário de terceiros. Este tutorial demonstra como usar um script do Azure PowerShell para concluir essa tarefa. O script usa o modelo de implantação do Resource Manager e cria os novos recursos a seguir

  • Grupo de recursos
  • Conta de armazenamento
  • Contêiner do Armazenamento de Blob do Azure
  • Política de SAS

Esse script começa declarando várias variáveis para especificar os nomes dos recursos anteriores e os nomes dos seguintes valores de entrada necessários:

  • Um nome de prefixo usado na nomenclatura de outros objetos de recurso
  • Nome da assinatura
  • Localização do datacenter

O script é concluído gerando a instrução apropriada CREATE CREDENTIAL que você usa em 2 – Criar uma credencial do SQL Server usando uma assinatura de acesso compartilhado. Esta instrução é copiada para sua área de transferência para você e é saída para o console para você ver.

Para criar uma política no contêiner e gerar uma SAS (Assinatura de Acesso Compartilhado), siga estas etapas:

  1. Abra o PowerShell ou o ISE do Windows PowerShell (consulte os requisitos de versão anteriores).

  2. Edite e execute o seguinte script:

    # Define global variables for the script
    $prefixName = '<a prefix name>'               # used as the prefix for the name for various objects
    $subscriptionID = '<your subscription ID>'    # the ID  of subscription name you will use
    $locationName = '<a data center location>'    # the data center region you will use
    $storageAccountName = $prefixName + 'storage' # the storage account name you will create or use
    $containerName = $prefixName + 'container'    # the storage container name to which you will attach the SAS policy with its SAS token
    $policyName = $prefixName + 'policy'          # the name of the SAS policy
    
    # Set a variable for the name of the resource group you will create or use
    $resourceGroupName = $prefixName + 'rg'
    
    # Add an authenticated Azure account for use in the session
    Connect-AzAccount
    
    # Set the tenant, subscription and environment for use in the rest of
    Set-AzContext -SubscriptionId $subscriptionID
    
    # Create a new resource group - comment out this line to use an existing resource group
    New-AzResourceGroup -Name $resourceGroupName -Location $locationName
    
    # Create a new Azure Resource Manager storage account - comment out this line to use an existing Azure Resource Manager storage account
    New-AzStorageAccount -Name $storageAccountName -ResourceGroupName $resourceGroupName -Type Standard_RAGRS -Location $locationName
    
    # Get the access keys for the Azure Resource Manager storage account
    $accountKeys = Get-AzStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName
    
    # Create a new storage account context using an Azure Resource Manager storage account
    $storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $accountKeys[0].Value
    
    # Creates a new container in Blob Storage
    $container = New-AzStorageContainer -Context $storageContext -Name $containerName
    
    # Sets up a Stored Access Policy and a Shared Access Signature for the new container
    $policy = New-AzStorageContainerStoredAccessPolicy -Container $containerName -Policy $policyName -Context $storageContext -StartTime $(Get-Date).ToUniversalTime().AddMinutes(-5) -ExpiryTime $(Get-Date).ToUniversalTime().AddYears(10) -Permission rwld
    
    # Gets the Shared Access Signature for the policy
    $sas = New-AzStorageContainerSASToken -name $containerName -Policy $policyName -Context $storageContext
    Write-Host 'Shared Access Signature= '$($sas.Substring(1))''
    
    # Sets the variables for the new container you just created
    $container = Get-AzStorageContainer -Context $storageContext -Name $containerName
    $cbc = $container.CloudBlobContainer
    
    # Outputs the Transact SQL to the clipboard and to the screen to create the credential using the Shared Access Signature
    Write-Host 'Credential T-SQL'
    $tSql = "CREATE CREDENTIAL [{0}] WITH IDENTITY='SHARED ACCESS SIGNATURE', SECRET='{1}'" -f $cbc.Uri, $sas
    Set-Clipboard -Value $tSql
    Write-Host $tSql
    
    # Once you're done with the tutorial, remove the resource group to clean up the resources.
    # Remove-AzResourceGroup -Name $resourceGroupName
    
  3. Depois que o script for concluído, a CREATE CREDENTIAL instrução estará em sua área de transferência para uso na próxima seção.

2 – Criar uma credencial do SQL Server usando uma assinatura de acesso compartilhado

Nesta seção, você criará uma credencial para armazenar as informações de segurança, que são usadas pelo SQL Server para gravar e ler no contêiner do Armazenamento de Blobs do Azure criado na etapa anterior.

Uma credencial do SQL Server é um objeto usado para armazenar informações de autenticação necessárias para se conectar a um recurso fora do SQL Server. A credencial armazena o caminho de URI do contêiner do Armazenamento de Blobs do Azure e a assinatura de acesso compartilhado para esse contêiner.

Para criar uma credencial do SQL Server, siga estas etapas:

  1. Inicie o SSMS.

  2. Abra uma nova janela de consulta e conecte-se à instância do SQL Server do mecanismo de banco de dados em seu ambiente local.

  3. Na nova janela de consulta, cole a CREATE CREDENTIAL instrução com a assinatura de acesso compartilhado da seção 1 e execute esse script.

    O script se parece com o código a seguir.

    /* Example:
          USE master
          CREATE CREDENTIAL [https://msfttutorial.blob.core.windows.net/containername]
          WITH IDENTITY='SHARED ACCESS SIGNATURE'
          , SECRET = 'sharedaccesssignature'
         GO */
    USE master;
    
    CREATE CREDENTIAL [https://<storage-account>.blob.core.windows.net/<container-name>]
    -- this name must match the container path, start with https and must not contain a forward slash at the end
        WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
        -- this is a mandatory string and should not be changed
        SECRET = 'sharedaccesssignature';
        -- this is the shared access signature key that you obtained in section 1.
    GO
    
  4. Para ver todas as credenciais disponíveis, você pode executar a seguinte instrução em uma janela de consulta conectada à sua instância:

    SELECT *
    FROM sys.credentials;
    
  5. Abra uma nova janela de consulta e conecte-se à instância do SQL Server do mecanismo de banco de dados em sua máquina virtual do Azure.

  6. Na nova janela de consulta, cole a CREATE CREDENTIAL instrução com a assinatura de acesso compartilhado da seção 1 e execute esse script.

  7. Repita as etapas 5 e 6 para quaisquer instâncias adicionais do SQL Server que você deseja ter acesso ao contêiner.

3 – BACKUP de banco de dados para URL

Nesta seção, você faz backup do AdventureWorks2025 banco de dados em sua instância do SQL Server para o contêiner que você criou na Seção 1.

Para fazer backup de um banco de dados no armazenamento de blobs, siga estas etapas:

  1. Inicie o SSMS.

  2. Abra uma nova janela de consulta e conecte-se à instância do SQL Server em sua máquina virtual do Azure.

  3. Copie e cole o script Transact-SQL a seguir na janela de consulta. Modifique a URL adequadamente para o nome da conta de armazenamento e o contêiner especificado na seção 1 e execute esse script.

    -- To permit log backups, before the full database backup, modify the database to use the full recovery model.
    USE master;
    ALTER DATABASE AdventureWorks2022
        SET RECOVERY FULL;
    
    -- Back up the full AdventureWorks2022 database to the container that you created in section 1
    BACKUP DATABASE AdventureWorks2022
        TO URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_onprem.bak';
    
  4. Abra o Pesquisador de Objetos e conecte-se ao armazenamento do Azure usando sua conta de armazenamento e a chave da conta.

    1. Expanda Contêineres, expanda o contêiner que você criou na seção 1 e verifique se o backup da etapa 3 anteriormente aparece neste contêiner.

    Captura de tela do processo de várias etapas para se conectar à conta de Armazenamento do Azure.

4 – Restaurar o banco de dados para a máquina virtual da URL

Nesta seção, você restaurará o AdventureWorks2025 banco de dados para sua instância do SQL Server em sua máquina virtual do Azure.

Observação

Para fins de simplicidade neste tutorial, usamos o mesmo contêiner para os arquivos de dados e de log que usamos para o backup do banco de dados. Em um ambiente de produção, você provavelmente usaria vários contêineres e, frequentemente, vários arquivos de dados também. Você também pode considerar a distribuição do backup em vários blobs para aumentar o desempenho do backup ao fazer backup de um banco de dados grande.

Para restaurar o AdventureWorks2025 banco de dados do Armazenamento de Blobs do Azure para sua instância do SQL Server em sua máquina virtual do Azure, siga estas etapas:

  1. Inicie o SSMS.

  2. Abra uma nova janela de consulta e conecte-se à instância do SQL Server do mecanismo de banco de dados em sua máquina virtual do Azure.

  3. Copie e cole o script Transact-SQL a seguir na janela de consulta. Modifique a URL adequadamente para o nome da conta de armazenamento e o contêiner especificado na seção 1 e execute esse script.

    -- Restore AdventureWorks2022 from URL to SQL Server instance using Azure Blob Storage for database files
    RESTORE DATABASE AdventureWorks2022
        FROM URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_onprem.bak'
    WITH MOVE 'AdventureWorks2022_data' TO 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_Data.mdf',
         MOVE 'AdventureWorks2022_log' TO 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_Log.ldf';
         --, REPLACE
    
  4. Abra o Pesquisador de Objetos e conecte-se à instância do SQL Server do Azure.

  5. No Pesquisador de Objetos, expanda o nó Bancos de Dados e verifique se o AdventureWorks2025 banco de dados foi restaurado (atualize o nó conforme necessário).

    1. Clique com o botão direito do mouse em AdventureWorks2025 e selecione Propriedades.

    2. Selecione Arquivos e verifique se os caminhos para os dois arquivos de banco de dados são URLs apontando para blobs no contêiner do Armazenamento de Blobs do Azure (selecione Cancelar quando terminar).

    Captura de tela do SSMS do banco de dados AdventureWorks2022 na VM do Azure.

  6. No Pesquisador de Objetos, conecte-se ao armazenamento do Azure.

    1. Expanda Contêineres, expanda o contêiner que você criou na seção 1 e verifique se a AdventureWorks2022_Data.mdf etapa 3 aparece AdventureWorks2022_Log.ldf anteriormente neste contêiner, juntamente com o arquivo de backup da seção 3 (atualize o nó conforme necessário).

    Captura de tela do Pesquisador de Objetos no SSMS mostrando os arquivos de dados dentro do contêiner, no Azure, abaixo de uma entrada de instância do SQL Server.

5 – Backup do banco de dados usando o backup de instantâneo de arquivo

Nesta seção, você faz backup do banco de dados em sua máquina virtual do AdventureWorks2025 Azure usando o backup de instantâneo de arquivo para executar um backup quase instantâneo usando instantâneos do Azure. Para obter mais informações sobre backups de instantâneo de arquivo, consulte backupsFile-Snapshot para arquivos de banco de dados no Azure

Para fazer backup do banco de dados usando o AdventureWorks2025 backup de instantâneo de arquivo, siga estas etapas:

  1. Inicie o SSMS.

  2. Abra uma nova janela de consulta e conecte-se à instância do SQL Server do mecanismo de banco de dados em sua máquina virtual do Azure.

  3. Copie, cole e execute o script de Transact-SQL a seguir na janela de consulta (não feche esta janela de consulta – execute esse script novamente na etapa 5). Esse procedimento armazenado do sistema permite que você exiba os backups de instantâneo de arquivo existentes para cada arquivo que compreende um banco de dados especificado. Você pode ver que não há backups de instantâneo de arquivo para este banco de dados.

    -- Verify that no file snapshot backups exist
    SELECT *
    FROM sys.fn_db_backup_file_snapshots('AdventureWorks2022');
    
  4. Copie e cole o script Transact-SQL a seguir na janela de consulta. Modifique a URL adequadamente para o nome da conta de armazenamento e o contêiner especificado na seção 1 e execute esse script. Observe a rapidez com que esse backup ocorre.

    -- Backup the AdventureWorks2022 database with FILE_SNAPSHOT
    BACKUP DATABASE AdventureWorks2022
       TO URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_Azure.bak'
       WITH FILE_SNAPSHOT;
    
  5. Depois de verificar se o script na etapa 4 foi executado com êxito, execute o script a seguir novamente. A operação de backup de instantâneo de arquivo na etapa 4 gerou instantâneos de arquivo dos dados e do arquivo de log.

    -- Verify that two file-snapshot backups exist
    SELECT *
    FROM sys.fn_db_backup_file_snapshots('AdventureWorks2022');
    

    Captura de tela do SSMS dos resultados de fn_db_backup_file_snapshots, mostrando instantâneos.

  6. No Pesquisador de Objetos, em sua instância do SQL Server em sua máquina virtual do Azure, expanda o nó Bancos de Dados e verifique se o AdventureWorks2025 banco de dados foi restaurado para essa instância (atualize o nó conforme necessário).

  7. No Pesquisador de Objetos, conecte-se ao armazenamento do Azure.

  8. Expanda Contêineres, expanda o contêiner que você criou na seção 1 e verifique se a AdventureWorks2022_Azure.bak etapa 4 anterior aparece neste contêiner, juntamente com o arquivo de backup da seção 3 e os arquivos de banco de dados da seção 4 (atualize o nó conforme necessário).

    Captura de tela do Pesquisador de Objetos no SSMS mostrando o backup de instantâneo no Azure.

6 – Gerar atividade e log de backup usando o backup de instantâneo de arquivo

Nesta seção, você gera atividade no AdventureWorks2025 banco de dados e cria periodicamente backups de log de transações usando backups de instantâneo de arquivo. Para obter mais informações sobre como usar backups de instantâneo de arquivo, consulte File-Snapshot Backups para Arquivos de Banco de Dados no Azure.

Para gerar atividade no AdventureWorks2025 banco de dados e criar periodicamente backups de log de transações usando backups de instantâneo de arquivo, siga estas etapas:

  1. Inicie o SSMS.

  2. Abra duas novas janelas de consulta e conecte cada uma à instância do SQL Server do mecanismo de banco de dados em sua máquina virtual do Azure.

  3. Copie, cole e execute o script Transact-SQL a seguir em uma das janelas de consulta. A Production.Location tabela tem 14 linhas antes de adicionarmos novas linhas na etapa 4.

    -- Verify row count at start
    SELECT COUNT(*)
    FROM AdventureWorks2022.Production.Location;
    
  4. Copie e cole os dois scripts de Transact-SQL a seguir nas duas janelas de consulta separadas. Modifique a URL adequadamente para o nome da conta de armazenamento e o contêiner especificado na seção 1 e execute esses scripts simultaneamente em janelas de consulta separadas. Esses scripts levam alguns minutos para serem concluídos.

    -- Insert 30,000 new rows into the Production.Location table in the AdventureWorks2022 database in batches of 75
    DECLARE @count AS INT = 1, @inner AS INT;
    
    WHILE @count < 400
        BEGIN
            BEGIN TRANSACTION;
            SET @inner = 1;
            WHILE @inner <= 75
                BEGIN
                    INSERT INTO AdventureWorks2022.Production.Location (
                        Name,
                        CostRate,
                        Availability,
                        ModifiedDate
                    )
                    VALUES (NEWID(), .5, 5.2, GETDATE());
                    SET @inner = @inner + 1;
                END
            COMMIT TRANSACTION;
            WAITFOR DELAY '00:00:01';
            SET @count = @count + 1;
        END
    
    SELECT COUNT(*)
    FROM AdventureWorks2022.Production.Location;
    
    --take 7 transaction log backups with FILE_SNAPSHOT, one per minute, and include the row count and the execution time in the backup file name
    DECLARE @count INT=1, @device NVARCHAR(120), @numrows INT;
    WHILE @count <= 7
       BEGIN
             SET @numrows = (SELECT COUNT (*) FROM AdventureWorks2022.Production.Location);
             SET @device = 'https://<storage-account>.blob.core.windows.net/<container-name>/tutorial-' + CONVERT (varchar(10),@numrows) + '-' + FORMAT(GETDATE(), 'yyyyMMddHHmmss') + '.bak';
             BACKUP LOG AdventureWorks2022 TO URL = @device WITH FILE_SNAPSHOT;
             SELECT * from sys.fn_db_backup_file_snapshots ('AdventureWorks2022');
          WAITFOR DELAY '00:1:00';
             SET @count = @count + 1;
       END;
    
  5. Examine a saída do primeiro script e observe que a contagem de linhas final agora é 29.939.

    Captura de tela do SSMS mostrando um conjunto de resultados com contagem de linhas de 29.939.

  6. Examine a saída do segundo script e observe que cada vez que a BACKUP LOG instrução é executada, dois novos instantâneos de arquivo são criados, um instantâneo de arquivo do arquivo de log e um instantâneo de arquivo do arquivo de dados – para um total de dois instantâneos de arquivo para cada arquivo de banco de dados. Após a conclusão do segundo script, observe que agora há um total de 16 instantâneos de arquivo, 8 para cada arquivo de banco de dados - um da BACKUP DATABASE instrução e um para cada execução da BACKUP LOG instrução.

    Captura de tela do SSMS mostrando o conjunto de resultados do histórico de instantâneos de backup.

  7. No Pesquisador de Objetos, conecte-se ao armazenamento do Azure.

  8. Expanda Contêineres, expanda o contêiner que você criou na seção 1 e verifique se sete novos arquivos de backup são exibidos, juntamente com os arquivos de dados das seções anteriores (atualize o nó conforme necessário).

    Captura de tela do Pesquisador de Objetos no SSMS com vários instantâneos no Contêiner do Azure.

7 – Restaurar um banco de dados para um ponto no tempo

Nesta seção, você restaurará o AdventureWorks2025 banco de dados para um ponto no tempo entre dois dos backups de log de transações.

Com backups tradicionais, para realizar a restauração pontual, você precisaria usar o backup completo do banco de dados, talvez um backup diferencial e todos os arquivos de log de transações até e logo após o ponto no tempo para o qual você deseja restaurar. Com backups de instantâneo de arquivo, você só precisa dos dois arquivos de backup de log adjacentes que fornecem as postagens de meta enquadrando o tempo para o qual você deseja restaurar. Você só precisa de dois conjuntos de backup de instantâneo de arquivo de log porque cada backup de log cria um instantâneo de arquivo de cada arquivo de banco de dados (cada arquivo de dados e o arquivo de log).

Para restaurar um banco de dados para um ponto especificado no tempo dos conjuntos de backup de instantâneo de arquivo, siga estas etapas:

  1. Inicie o SSMS.

  2. Abra uma nova janela de consulta e conecte-se à instância do SQL Server do mecanismo de banco de dados em sua máquina virtual do Azure.

  3. Copie, cole e execute o script de Transact-SQL a seguir na janela de consulta. Verifique se a Production.Location tabela tem 29.939 linhas antes de restaurá-la para um ponto no tempo em que há menos linhas na etapa 4.

    -- Verify row count at start
    SELECT COUNT(*)
    FROM AdventureWorks2022.Production.Location;
    

    Captura de tela dos resultados do SSMS mostrando uma contagem de linhas de 29.939.

  4. Copie e cole o script Transact-SQL a seguir na janela de consulta. Selecione dois arquivos de backup de log adjacentes e converta o nome do arquivo na data e hora necessárias para esse script. Modifique a URL adequadamente para o nome da conta de armazenamento e o contêiner especificado na seção 1. Forneça o primeiro e o segundo nomes de arquivo de backup, forneça o STOPAT tempo no formato e June 26, 2018 01:48 PMexecute esse script. Leva alguns minutos para ser concluído.

    -- restore and recover to a point in time between the times of two transaction log backups, and then verify the row count
    ALTER DATABASE AdventureWorks2022
        SET SINGLE_USER
        WITH ROLLBACK IMMEDIATE;
    
    RESTORE DATABASE AdventureWorks2022 FROM URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/<firstbackupfile>.bak'
        WITH NORECOVERY, REPLACE;
    
    RESTORE LOG AdventureWorks2022 FROM URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/<secondbackupfile>.bak'
        WITH RECOVERY, STOPAT = 'June 26, 2018 01:48 PM';
    
    ALTER DATABASE AdventureWorks2022
        SET MULTI_USER;
    
    -- get new count
    SELECT COUNT(*)
    FROM AdventureWorks2022.Production.Location;
    
  5. Examine a saída. Após a restauração, a contagem de linhas é de 18.389, que é um número de contagem de linhas entre o backup de log 5 e 6 (sua contagem de linhas pode variar).

    Captura de tela de 18.000 linhas.

8 – Restaurar como novo banco de dados do backup de log

Nesta seção, você restaurará o AdventureWorks2025 banco de dados como um novo banco de dados de um backup de log de transações de instantâneo de arquivo.

Nesse cenário, você está executando uma restauração para uma instância do SQL Server em uma máquina virtual diferente para fins de análise de negócios e relatórios. Restaurar para uma instância diferente em uma máquina virtual diferente descarrega a carga de trabalho para uma máquina virtual dedicada e dimensionada para essa finalidade, removendo seus requisitos de recursos do sistema transacional.

A restauração de um backup de log de transações com backup de instantâneo de arquivo é rápida, substancialmente mais rápida do que com backups de streaming tradicionais. Com backups de streaming tradicionais, você precisa usar o backup completo do banco de dados, talvez um backup diferencial e alguns ou todos os backups de log de transações (ou um novo backup de banco de dados completo). No entanto, com backups de log de instantâneo de arquivo, você só precisa do backup de log mais recente (ou qualquer outro backup de log ou quaisquer dois backups de log adjacentes para restauração pontual em um ponto entre dois tempos de backup de log). Para ficar claro, você só precisa de um conjunto de backup de instantâneo de arquivo de log porque cada backup de log de instantâneo de arquivo cria um instantâneo de arquivo de cada arquivo de banco de dados (cada arquivo de dados e o arquivo de log).

Para restaurar um banco de dados para um novo banco de dados de um backup de log de transações usando o backup de instantâneo de arquivo, siga estas etapas:

  1. Inicie o SSMS.

  2. Abra uma nova janela de consulta e conecte-se à instância do SQL Server do mecanismo de banco de dados em uma máquina virtual do Azure.

    Se essa for uma máquina virtual do Azure diferente do que você tem usado para as seções anteriores, verifique se você seguiu as etapas em 2 – Criar uma credencial do SQL Server usando uma assinatura de acesso compartilhado. Se você quiser restaurar para um contêiner diferente, siga as etapas em 1 – Criar política de acesso armazenado e armazenamento de acesso compartilhado para o novo contêiner.

  3. Copie e cole o script Transact-SQL a seguir na janela de consulta. Selecione o arquivo de backup de log que você deseja usar. Modifique a URL adequadamente para o nome da conta de armazenamento e o contêiner especificado na seção 1, forneça o nome do arquivo de backup de log e execute esse script.

    -- restore as a new database from a transaction log backup file
    RESTORE DATABASE AdventureWorks2022_EOM
        FROM URL = 'https://<storage-account>.blob.core.windows.net/<container-name>/<logbackupfile.bak>'
    WITH MOVE 'AdventureWorks2022_data' TO 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_EOM_Data.mdf',
         MOVE 'AdventureWorks2022_log' TO 'https://<storage-account>.blob.core.windows.net/<container-name>/AdventureWorks2022_EOM_Log.ldf',
         RECOVERY;
         --, REPLACE
    
  4. Examine a saída para verificar se a restauração foi bem-sucedida.

  5. No Pesquisador de Objetos, conecte-se ao armazenamento do Azure.

  6. Expanda Contêineres, expanda o contêiner que você criou na seção 1 (atualize se necessário) e verifique se os novos dados e arquivos de log aparecem no contêiner, juntamente com os blobs das seções anteriores.

    Captura de tela do navegador de armazenamento do SQL Server Management Studio de contêineres do Azure mostrando os dados e os arquivos de log do novo banco de dados.

9 – Gerenciar conjuntos de backup e backups de instantâneo de arquivo

Nesta seção, você excluirá um conjunto de backup usando o procedimento armazenado do sistema sp_delete_backup . Esse procedimento armazenado do sistema exclui o arquivo de backup e o instantâneo de arquivo em cada arquivo de banco de dados associado a esse conjunto de backup.

Observação

Se você tentar excluir um conjunto de backup excluindo o arquivo de backup do contêiner do Armazenamento de Blobs do Azure, você só excluirá o próprio arquivo de backup – os instantâneos de arquivo associados permanecerão. Se você se encontrar nesse cenário, use a função sys.fn_db_backup_file_snapshots sistema para identificar a URL dos instantâneos de arquivo órfãos e usar o procedimento armazenado do sistema sp_delete_backup_file_snapshot para excluir cada instantâneo de arquivo órfão. Para obter mais informações, consulte Backups de instantâneo de arquivo para arquivos de banco de dados no Azure.

Para excluir um conjunto de backup de instantâneo de arquivo, siga estas etapas:

  1. Inicie o SSMS.

  2. Abra uma nova janela de consulta e conecte-se à instância do SQL Server do mecanismo de banco de dados em sua máquina virtual do Azure (ou a qualquer instância do SQL Server com permissões para ler e gravar neste contêiner).

  3. Copie e cole o script Transact-SQL a seguir na janela de consulta. Selecione o backup de log que você deseja excluir junto com seus instantâneos de arquivo associados. Modifique a URL adequadamente para o nome da conta de armazenamento e o contêiner especificado na seção 1, forneça o nome do arquivo de backup de log e execute esse script.

    EXECUTE sys.sp_delete_backup 'https://<storage-account>.blob.core.windows.net/<container-name>/tutorial-21764-20181003205236.bak';
    
  4. No Pesquisador de Objetos, conecte-se ao armazenamento do Azure.

  5. Expanda Contêineres, expanda o contêiner que você criou na seção 1 e verifique se o arquivo de backup usado na etapa 3 não aparece mais neste contêiner (atualize o nó conforme necessário).

    Captura de tela do navegador de armazenamento SQL Server Management Studios mostrando contêineres do Azure e a exclusão do blob de backup do log de transações.

  6. Copie, cole e execute o script de Transact-SQL a seguir na janela de consulta para verificar se dois instantâneos de arquivo foram excluídos.

    -- verify that two file snapshots have been removed
    SELECT *
    FROM sys.fn_db_backup_file_snapshots('AdventureWorks2022');
    

    Captura de tela do painel de resultados do SSMS mostrando dois instantâneos de arquivo excluídos.

10 – Remover recursos

Depois de terminar este tutorial e conservar recursos, exclua o grupo de recursos criado neste tutorial.

Para excluir o grupo de recursos, execute o seguinte código do PowerShell:

# Define global variables for the script
$prefixName = '<prefix name>' # should be the same as the beginning of the tutorial

# Set a variable for the name of the resource group you will create or use
$resourceGroupName = $prefixName + 'rg'

# Adds an authenticated Azure account for use in the session
Connect-AzAccount

# Set the tenant, subscription and environment for use in the rest of
Set-AzContext -SubscriptionId $subscriptionID

# Remove the resource group
Remove-AzResourceGroup -Name $resourceGroupName