Udostępnij za pomocą


Samouczek: używanie usługi Azure Blob Storage z programem SQL Server

Dotyczy: SQL Server 2016 (13.x) i nowsze wersje

Ten samouczek pomaga zrozumieć, jak używać usługi Azure Blob Storage na potrzeby plików danych i kopii zapasowych w programie SQL Server 2016 (13.x) i nowszych wersjach.

Obsługa usługi Azure Blob Storage w programie SQL Server została wprowadzona w programie SQL Server 2012 (11.x) z dodatkiem Service Pack 1 CU2 i ulepszona w nowszych wersjach. Aby zapoznać się z omówieniem funkcji i zalet korzystania z tej funkcji, zobacz pliki danych programu SQL Server na platformie Microsoft Azure.

W tym samouczku pokazano, jak pracować z plikami danych programu SQL Server w usłudze Azure Blob Storage w wielu sekcjach. Każda sekcja koncentruje się na konkretnym zadaniu i należy wykonać poszczególne sekcje w sekwencji. Najpierw dowiesz się, jak utworzyć nowy kontener w usłudze Blob Storage przy użyciu przechowywanych zasad dostępu i sygnatury dostępu współdzielonego. Następnie dowiesz się, jak utworzyć poświadczenia programu SQL Server w celu zintegrowania programu SQL Server z usługą Azure Blob Storage. Następnie należy utworzyć kopię zapasową bazy danych w usłudze Blob Storage i przywrócić ją do maszyny wirtualnej platformy Azure. Następnie użyj kopii zapasowej dziennika transakcji migawki plików programu SQL Server, aby przywrócić do punktu w czasie i do nowej bazy danych. Na koniec samouczek przedstawia użycie procedur składowanych i funkcji systemu metadanych, które ułatwiają zrozumienie kopii zapasowych migawek plików i praca z nimi.

Wymagania wstępne

Aby ukończyć ten samouczek, musisz zapoznać się z pojęciami dotyczącymi tworzenia kopii zapasowych i przywracania kopii zapasowych programu SQL Server oraz składnią języka T-SQL.

Aby użyć tego samouczka, musisz mieć konto usługi Azure Storage, program SQL Server Management Studio (SSMS), dostęp do wystąpienia lokalnego programu SQL Server, dostęp do maszyny wirtualnej platformy Azure z uruchomionym wystąpieniem programu SQL Server 2016 (13.x) lub nowszą wersją oraz bazą AdventureWorks2025 danych. Ponadto konto używane do wystawiania BACKUP poleceń i RESTORE powinno znajdować się w roli bazy danych db_backupoperator ze zmienionymi uprawnieniami poświadczeń .

Ważne

Program SQL Server nie obsługuje usługi Azure Data Lake Storage. Upewnij się, że hierarchiczna przestrzeń nazw nie jest włączona na koncie magazynu używanym na potrzeby tego samouczka.

1 — Tworzenie przechowywanych zasad dostępu i magazynu dostępu współdzielonego

W tej sekcji użyjesz skryptu programu Azure PowerShell , aby utworzyć sygnaturę dostępu współdzielonego w kontenerze usługi Azure Blob Storage przy użyciu przechowywanych zasad dostępu.

Uwaga / Notatka

Ten skrypt jest napisany przy użyciu programu Azure PowerShell 5.0.10586.

Sygnatura dostępu współdzielonego to identyfikator URI, który udziela ograniczonych praw dostępu do kontenerów, obiektów blob, kolejek lub tabel. Przechowywane zasady dostępu zapewniają dodatkowy poziom kontroli nad sygnaturami dostępu współdzielonego po stronie serwera, w tym cofanie, wygasanie lub rozszerzanie dostępu. W przypadku korzystania z tego nowego rozszerzenia należy utworzyć zasadę dla kontenera z co najmniej uprawnieniami do odczytu, zapisu i wyświetlania listy.

Możesz utworzyć przechowywane zasady dostępu i sygnaturę dostępu współdzielonego przy użyciu programu Azure PowerShell, zestawu AZURE Storage SDK, interfejsu API REST platformy Azure lub narzędzia innej firmy. W tym samouczku pokazano, jak wykonać to zadanie za pomocą skryptu programu Azure PowerShell. Skrypt używa modelu wdrażania usługi Resource Manager i tworzy następujące nowe zasoby

  • Grupa zasobów
  • Konto magazynu
  • Kontener usługi Azure Blob Storage
  • Polityka SAS

Ten skrypt rozpoczyna się od zadeklarowania kilku zmiennych w celu określenia nazw poprzednich zasobów i nazw następujących wymaganych wartości wejściowych:

  • Nazwa prefiksu używana w nazewnictwie innych obiektów zasobów
  • Nazwa subskrypcji
  • Lokalizacja centrum danych

Skrypt zostanie ukończony, generując odpowiednią CREATE CREDENTIAL instrukcję używaną w 2 — utwórz poświadczenia programu SQL Server przy użyciu sygnatury dostępu współdzielonego. To oświadczenie zostało skopiowane do twojego schowka i jest wyświetlane w konsoli, abyś mógł zobaczyć.

Aby utworzyć zasady w kontenerze i wygenerować sygnaturę dostępu współdzielonego (SAS), wykonaj następujące kroki:

  1. Otwórz program Windows PowerShell lub program Windows PowerShell ISE (zobacz poprzednie wymagania dotyczące wersji).

  2. Edytuj, a następnie wykonaj następujący skrypt:

    # 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. Po zakończeniu działania skryptu instrukcja CREATE CREDENTIAL znajduje się w schowku do użycia w następnej sekcji.

2 — Tworzenie poświadczeń programu SQL Server przy użyciu sygnatury dostępu współdzielonego

W tej sekcji utworzysz poświadczenia do przechowywania informacji o zabezpieczeniach, które są używane przez program SQL Server do zapisywania i odczytywania z kontenera usługi Azure Blob Storage utworzonego w poprzednim kroku.

Poświadczenie programu SQL Server to obiekt używany do przechowywania informacji uwierzytelniania wymaganych do nawiązania połączenia z zasobem poza programem SQL Server. Poświadczenie przechowuje ścieżkę identyfikatora URI kontenera usługi Azure Blob Storage oraz podpis dostępu współdzielonego dla tego kontenera.

Aby utworzyć poświadczenia programu SQL Server, wykonaj następujące kroki:

  1. Uruchom program SSMS.

  2. Otwórz nowe okno zapytania i połącz się z instancją aparatu bazy danych SQL Server w swojej lokalnej infrastrukturze.

  3. W nowym oknie zapytania wklej instrukcję CREATE CREDENTIAL z sygnaturą dostępu współdzielonego z sekcji 1 i wykonaj ten skrypt.

    Skrypt wygląda jak poniższy kod.

    /* 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. Aby wyświetlić wszystkie dostępne poświadczenia, możesz uruchomić następującą instrukcję w oknie zapytania połączonym z wystąpieniem:

    SELECT *
    FROM sys.credentials;
    
  5. Otwórz nowe okno zapytania i połącz się z wystąpieniem aparatu bazy danych SQL Server na maszynie wirtualnej Azure.

  6. W nowym oknie zapytania wklej instrukcję CREATE CREDENTIAL z sygnaturą dostępu współdzielonego z sekcji 1 i wykonaj ten skrypt.

  7. Powtórz kroki 5 i 6 dla wszelkich dodatkowych wystąpień programu SQL Server, które mają mieć dostęp do kontenera.

3 - Kopia zapasowa bazy danych na URL

W tej sekcji utworzysz kopię zapasową bazy danych w wystąpieniu AdventureWorks2025 programu SQL Server do kontenera utworzonego w sekcji 1.

Aby utworzyć kopię zapasową bazy danych w magazynie obiektów blob, wykonaj następujące kroki:

  1. Uruchom program SSMS.

  2. Otwórz nowe okno zapytania i połącz się z instancją SQL Server na maszynie wirtualnej Azure.

  3. Skopiuj następujący skrypt Transact-SQL i wklej go w oknie zapytania. Zmodyfikuj adres URL odpowiednio dla nazwy konta magazynu i kontenera określonego w sekcji 1, a następnie wykonaj ten skrypt.

    -- 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. Otwórz Eksploratora obiektów i połącz się z usługą Azure Storage przy użyciu konta magazynu i klucza konta.

    1. Rozwiń węzeł Kontenery, rozwiń kontener utworzony w sekcji 1 i sprawdź, czy kopia zapasowa z kroku 3 została wcześniej wyświetlona w tym kontenerze.

    Zrzut ekranu przedstawiający wieloetapowy proces łączenia się z kontem usługi Azure Storage.

4 — Przywracanie bazy danych do maszyny wirtualnej z adresu URL

W tej sekcji przywrócisz AdventureWorks2025 bazę danych do wystąpienia programu SQL Server na maszynie wirtualnej platformy Azure.

Uwaga / Notatka

Na potrzeby uproszczenia w tym samouczku używamy tego samego kontenera dla plików danych i dzienników używanych do tworzenia kopii zapasowej bazy danych. W środowisku produkcyjnym prawdopodobnie będziesz używać wielu kontenerów i często wielu plików danych. Możesz również rozważyć podzielenie kopii zapasowej na wielu obiektach blob, w celu zwiększenia wydajności podczas tworzenia kopii zapasowej dużej bazy danych.

Aby przywrócić bazę danych AdventureWorks2025 z usługi Azure Blob Storage do wystąpienia programu SQL Server na maszynie wirtualnej platformy Azure, wykonaj następujące kroki:

  1. Uruchom program SSMS.

  2. Otwórz nowe okno zapytania i połącz się z wystąpieniem aparatu bazy danych SQL Server na maszynie wirtualnej Azure.

  3. Skopiuj następujący skrypt Transact-SQL i wklej go w oknie zapytania. Zmodyfikuj adres URL odpowiednio dla nazwy konta magazynu i kontenera określonego w sekcji 1, a następnie wykonaj ten skrypt.

    -- 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. Otwórz eksplorator obiektów i połącz się z wystąpieniem Azure SQL Server.

  5. W Eksploratorze obiektów rozwiń węzeł Bazy danych i sprawdź, AdventureWorks2025 czy baza danych została przywrócona (odśwież węzeł zgodnie z potrzebami).

    1. Kliknij prawym przyciskiem myszy pozycję AdventureWorks2025 i wybierz pozycję Właściwości.

    2. Wybierz pozycję Files i sprawdź, czy ścieżki do dwóch plików bazy danych są adresami URL wskazującymi na bloby w kontenerze usługi Azure Blob Storage (wybierz pozycję Anuluj po sprawdzeniu).

    Zrzut ekranu przedstawiający program SSMS bazy danych AdventureWorks2022 na maszynie wirtualnej platformy Azure.

  6. W Eksploratorze obiektów połącz się z usługą Azure Storage.

    1. Rozwiń węzeł Kontenery, rozwiń kontener utworzony w sekcji 1 i sprawdź, czy polecenie AdventureWorks2022_Data.mdf i AdventureWorks2022_Log.ldf z kroku 3 zostało wcześniej wyświetlone w tym kontenerze wraz z plikiem kopii zapasowej z sekcji 3 (odśwież węzeł zgodnie z potrzebami).

    Zrzut ekranu eksploratora obiektów w programie SSMS przedstawiający pliki danych w kontenerze na platformie Azure pod wpisem wystąpienia programu SQL Server.

5 — Backup bazy danych przy użyciu backupu migawki plików

W tej sekcji utworzysz kopię zapasową AdventureWorks2025 bazy danych na maszynie wirtualnej platformy Azure przy użyciu kopii zapasowej migawki plików, aby wykonać niemal natychmiastową kopię zapasową przy użyciu migawek platformy Azure. Aby uzyskać więcej informacji na temat kopii zapasowych migawek plików, zobacz File-Snapshot Kopie zapasowe plików baz danych w Azure

Aby utworzyć kopię zapasową bazy danych AdventureWorks2025 używając kopii zapasowej w formie migawki plików, wykonaj następujące kroki:

  1. Uruchom program SSMS.

  2. Otwórz nowe okno zapytania i połącz się z wystąpieniem aparatu bazy danych SQL Server na maszynie wirtualnej Azure.

  3. Skopiuj, wklej i wykonaj następujący skrypt Transact-SQL w oknie zapytania (nie zamykaj tego okna zapytania — ponownie wykonasz ten skrypt w kroku 5). Ta systemowa procedura składowana umożliwia wyświetlanie istniejących kopii zapasowych migawek plików dla każdego pliku składającego się z określonej bazy danych. Widać, że dla tej bazy danych nie ma kopii zapasowych migawek plików.

    -- Verify that no file snapshot backups exist
    SELECT *
    FROM sys.fn_db_backup_file_snapshots('AdventureWorks2022');
    
  4. Skopiuj następujący skrypt Transact-SQL i wklej go w oknie zapytania. Zmodyfikuj adres URL odpowiednio dla nazwy konta magazynu i kontenera określonego w sekcji 1, a następnie wykonaj ten skrypt. Zwróć uwagę, jak szybko odbywa się ta kopia zapasowa.

    -- 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. Po upewnieniu się, że skrypt w kroku 4 został wykonany pomyślnie, ponownie wykonaj następujący skrypt. Operacja tworzenia kopii zapasowej migawki plików w kroku 4 wygenerowała migawki plików zarówno danych, jak i pliku dziennika.

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

    Zrzut ekranu przedstawiający program SSMS z wynikami fn_db_backup_file_snapshots przedstawiający migawki.

  6. W Eksploratorze obiektów w wystąpieniu programu SQL Server na maszynie wirtualnej platformy Azure rozwiń węzeł Databases i sprawdź, czy baza danych AdventureWorks2025 została przywrócona do tego wystąpienia (odśwież węzeł w razie potrzeby).

  7. W Eksploratorze obiektów połącz się z usługą Azure Storage.

  8. Rozwiń węzeł Kontenery, rozwiń kontener utworzony w sekcji 1 i sprawdź, czy AdventureWorks2022_Azure.bak element z kroku 4 został wcześniej wyświetlony w tym kontenerze, wraz z plikiem kopii zapasowej z sekcji 3 i plikami bazy danych z sekcji 4 (odśwież węzeł zgodnie z potrzebami).

    Zrzut ekranu z Eksploratora obiektów w programie SSMS przedstawiający kopię zapasową migawki na platformie Azure.

6 — Tworzenie dziennika aktywności i kopii zapasowych za pomocą migawek plików

W tej sekcji generujesz aktywność w AdventureWorks2025 bazie danych i okresowo tworzysz kopie zapasowe dziennika transakcji przy użyciu kopii zapasowych migawek plików. Aby uzyskać więcej informacji na temat korzystania z kopii zapasowych migawek plików, zobacz File-Snapshot Backups for Database Files in Azure.

Aby wygenerować działanie w bazie danych AdventureWorks2025 i okresowo tworzyć kopie zapasowe dziennika transakcji przy użyciu kopii zapasowych migawek plików, wykonaj następujące kroki:

  1. Uruchom program SSMS.

  2. Otwórz dwa nowe okna zapytań i połącz je z instancją SQL Server aparatu bazy danych na maszynie wirtualnej platformy Azure.

  3. Skopiuj, wklej i wykonaj następujący skrypt Transact-SQL w jednym z okien zapytań. Tabela Production.Location zawiera 14 wierszy przed dodaniem nowych wierszy w kroku 4.

    -- Verify row count at start
    SELECT COUNT(*)
    FROM AdventureWorks2022.Production.Location;
    
  4. Skopiuj i wklej następujące dwa skrypty Transact-SQL do dwóch oddzielnych okien zapytań. Zmodyfikuj adres URL odpowiednio dla nazwy konta magazynu i kontenera określonego w sekcji 1, a następnie wykonaj te skrypty jednocześnie w oddzielnych oknach zapytań. Wykonanie tych skryptów potrwa kilka minut.

    -- 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. Przejrzyj dane wyjściowe pierwszego skryptu i zwróć uwagę, że końcowa liczba wierszy wynosi teraz 29 939.

    Zrzut ekranu z programu SSMS przedstawiający zestaw wyników z liczbą wierszy 29 939.

  6. Przejrzyj dane wyjściowe drugiego skryptu i zwróć uwagę, że za każdym razem BACKUP LOG , gdy instrukcja jest wykonywana, że tworzone są dwie nowe migawki plików, jedna migawka pliku dziennika i jedna migawka pliku danych — łącznie dwie migawki plików dla każdego pliku bazy danych. Po zakończeniu drugiego skryptu zwróć uwagę, że istnieje teraz łącznie 16 migawek plików, 8 dla każdego pliku bazy danych — jeden z BACKUP DATABASE instrukcji i jeden dla każdego wykonania instrukcji BACKUP LOG .

    Zrzut ekranu z programu SSMS przedstawiający zestaw wyników historii migawek kopii zapasowych.

  7. W Eksploratorze obiektów połącz się z usługą Azure Storage.

  8. Rozwiń węzeł Containers, rozwiń kontener utworzony w sekcji 1 i sprawdź, czy są wyświetlane siedem nowych plików kopii zapasowych wraz z plikami danych z poprzednich sekcji (odśwież węzeł zgodnie z potrzebami).

    Zrzut ekranu z Eksploratora obiektów w programie SSMS z wieloma migawkami w kontenerze platformy Azure.

7 — Przywracanie bazy danych do punktu w czasie

W tej sekcji przywracasz AdventureWorks2025 bazę danych do punktu w czasie między dwoma kopiami zapasowymi dziennika transakcji.

W przypadku tradycyjnych kopii zapasowych, aby przeprowadzić przywracanie do punktu w czasie, należy użyć pełnej kopii zapasowej bazy danych, być może różnicowej kopii zapasowej i wszystkich plików dziennika transakcji do i tuż obok punktu w czasie, do którego chcesz przywrócić. W przypadku kopii zapasowych typu migawka plików potrzebne są tylko dwa sąsiadujące pliki kopii zapasowej dziennika, które określają ramy czasowe, do których chcesz przywrócić. Potrzebne są tylko dwa zestawy kopii zapasowych migawek plików dziennika, ponieważ każda kopia zapasowa dziennika tworzy migawkę pliku każdej bazy danych (każdy plik danych i plik dziennika).

Aby przywrócić bazę danych do określonego punktu w czasie z zestawów kopii zapasowych migawek plików, wykonaj następujące kroki:

  1. Uruchom program SSMS.

  2. Otwórz nowe okno zapytania i połącz się z wystąpieniem aparatu bazy danych SQL Server na maszynie wirtualnej Azure.

  3. Skopiuj, wklej i wykonaj następujący skrypt Transact-SQL w oknie zapytania. Sprawdź, czy tabela Production.Location zawiera 29 939 wierszy, zanim przywrócimy ją do punktu w czasie, gdy w kroku 4 znajduje się mniej wierszy.

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

    Zrzut ekranu przedstawiający wyniki programu SSMS z liczbą wierszy 29 939.

  4. Skopiuj następujący skrypt Transact-SQL i wklej go w oknie zapytania. Wybierz dwa sąsiadujące pliki kopii zapasowej dziennika i przekonwertuj nazwę pliku na datę i godzinę potrzebnego dla tego skryptu. Zmodyfikuj adres URL odpowiednio dla nazwy konta magazynu i kontenera określonego w sekcji 1. Podaj nazwy plików pierwszej i drugiej kopii zapasowej, podaj STOPAT czas w formacie June 26, 2018 01:48 PM, a następnie wykonaj ten skrypt. Ukończenie tego procesu może potrwać kilka minut.

    -- 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. Przejrzyj dane wyjściowe. Po przywróceniu liczba wierszy wynosi 18 389, co jest liczbą wierszy między kopią zapasową dziennika 5 i 6 (liczba wierszy może się różnić).

    Zrzut ekranu przedstawiający 18 000 wierszy.

8 — Przywróć jako nową bazę danych z kopii zapasowej dziennika

W tej sekcji przywracasz AdventureWorks2025 bazę danych jako nową bazę danych z kopii zapasowej dziennika transakcji migawki plików.

W tym scenariuszu wykonujesz przywracanie do wystąpienia programu SQL Server na innej maszynie wirtualnej na potrzeby analizy biznesowej i raportowania. Przywracanie do innego wystąpienia na innej maszynie wirtualnej przenosi obciążenie na maszynę wirtualną, zadedykowaną i dostosowaną pod kątem tego celu, co eliminuje jego wymagania dotyczące zasobów z systemu transakcyjnego.

Przywracanie z kopii zapasowej dziennika transakcji za pomocą kopii zapasowej migawki plików jest znacznie szybsze niż w przypadku tradycyjnych kopii zapasowych przesyłania strumieniowego. W przypadku tradycyjnych kopii zapasowych przesyłania strumieniowego należy użyć pełnej kopii zapasowej bazy danych, na przykład różnicowej kopii zapasowej i niektórych lub wszystkich kopii zapasowych dziennika transakcji (lub nowej pełnej kopii zapasowej bazy danych). Jednak w przypadku kopii zapasowych dziennika migawek plików potrzebujesz tylko najnowszej kopii zapasowej dziennika (lub dowolnej innej kopii zapasowej dziennika lub dwóch sąsiednich kopii zapasowych dziennika dla przywracania do punktu w czasie między dwoma godzinami tworzenia kopii zapasowej dziennika). Aby było jasne, potrzebujesz tylko jednego zestawu kopii zapasowej migawki pliku dziennika, ponieważ każda kopia zapasowa migawki dziennika tworzy migawkę każdego pliku bazy danych (każdego pliku danych i pliku dziennika).

Aby przywrócić bazę danych do nowej bazy danych z kopii zapasowej dziennika transakcji przy użyciu kopii zapasowej migawki plikowej, wykonaj następujące kroki:

  1. Uruchom program SSMS.

  2. Otwórz nowe okno zapytania i połącz się z instancją silnika bazy danych SQL Server na maszynie wirtualnej Azure.

    Jeśli jest to inna maszyna wirtualna platformy Azure niż w poprzednich sekcjach, upewnij się, że wykonano kroki opisane w 2 — Tworzenie poświadczeń programu SQL Server przy użyciu sygnatury dostępu współdzielonego. Jeśli chcesz przywrócić do innego kontenera, wykonaj kroki opisane w 1 — Tworzenie przechowywanych zasad dostępu i magazynu dostępu współdzielonego dla nowego kontenera.

  3. Skopiuj następujący skrypt Transact-SQL i wklej go w oknie zapytania. Wybierz plik kopii zapasowej dziennika, którego chcesz użyć. Zmodyfikuj adres URL zgodnie z nazwą konta magazynu i kontenera określonymi w sekcji 1, podaj nazwę pliku kopii zapasowej dziennika, a następnie wykonaj ten skrypt.

    -- 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. Przejrzyj dane wyjściowe, aby sprawdzić, czy przywracanie zakończyło się pomyślnie.

  5. W Eksploratorze obiektów połącz się z usługą Azure Storage.

  6. Rozwiń węzeł Containers, rozwiń kontener utworzony w sekcji 1 (odśwież w razie potrzeby) i sprawdź, czy nowe pliki danych i dziennika są wyświetlane w kontenerze wraz z obiektami blob z poprzednich sekcji.

    Zrzut ekranu przeglądarki magazynu kontenerów Azure programu SQL Server Management Studio przedstawiający pliki danych i dzienników nowej bazy danych.

9 — Zarządzanie zestawami kopii zapasowych i kopiami migawek plików

W tej sekcji usuniesz zestaw kopii zapasowych przy użyciu procedury składowanej systemu sp_delete_backup . Ta procedura składowana systemu usuwa plik kopii zapasowej oraz migawkę pliku w każdym pliku bazy danych powiązanym z tym zestawem kopii zapasowej.

Uwaga / Notatka

Jeśli spróbujesz usunąć zestaw kopii zapasowych, usuwając plik kopii zapasowej z kontenera usługi Azure Blob Storage, usuniesz tylko sam plik kopii zapasowej — skojarzone migawki plików pozostaną. Jeśli znajdziesz się w tym scenariuszu, użyj funkcji systemu sys.fn_db_backup_file_snapshots , aby zidentyfikować adres URL oddzielonych migawek plików i użyć procedury składowanej systemu sp_delete_backup_file_snapshot , aby usunąć każdą migawkę oddzielonego pliku. Aby uzyskać więcej informacji, zobacz File-Snapshot Backups for Database Files in Azure.

Aby usunąć zestaw kopii zapasowych migawek plików, wykonaj następujące kroki:

  1. Uruchom program SSMS.

  2. Otwórz nowe okno zapytania i połącz się z SQL Server na platformie Azure w maszynie wirtualnej (lub dowolnym SQL Server z uprawnieniami do odczytu i zapisu w tym kontenerze).

  3. Skopiuj następujący skrypt Transact-SQL i wklej go w oknie zapytania. Wybierz kopię zapasową dziennika, którą chcesz usunąć wraz z skojarzonymi migawkami plików. Zmodyfikuj adres URL zgodnie z nazwą konta magazynu i kontenera określonymi w sekcji 1, podaj nazwę pliku kopii zapasowej dziennika, a następnie wykonaj ten skrypt.

    EXECUTE sys.sp_delete_backup 'https://<storage-account>.blob.core.windows.net/<container-name>/tutorial-21764-20181003205236.bak';
    
  4. W Eksploratorze obiektów połącz się z usługą Azure Storage.

  5. Rozwiń węzeł Containers, rozwiń kontener utworzony w sekcji 1 i sprawdź, czy plik kopii zapasowej użyty w kroku 3 nie jest już wyświetlany w tym kontenerze (odśwież węzeł zgodnie z potrzebami).

    Zrzut ekranu przedstawiający przeglądarkę magazynu SQL Server Management Studios z kontenerami platformy Azure i usunięciem obiektu blob kopii zapasowej dziennika transakcji.

  6. Skopiuj, wklej i wykonaj następujący skrypt Transact-SQL w oknie zapytania, aby sprawdzić, czy dwie migawki plików zostały usunięte.

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

    Zrzut ekranu przedstawiający okienko wyników programu SSMS z wyświetlonymi dwoma usuniętymi migawkami plików.

10 — Usuwanie zasobów

Po zakończeniu pracy z tym samouczkiem i oszczędzaniu zasobów pamiętaj o usunięciu grupy zasobów utworzonej w tym samouczku.

Aby usunąć grupę zasobów, uruchom następujący kod programu 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