Eseguire la migrazione di database da SQL Server a sql Istanza gestita tramite il servizio Disaserzione log (anteprima)Migrate databases from SQL Server to SQL Managed Instance by using Log Replay Service (Preview)

SI APPLICA A: Istanza gestita di SQL di Azure

Questo articolo illustra come configurare manualmente la migrazione del database da SQL Server 2008-2019 a Istanza gestita di SQL di Azure usando il Servizio di riproduzione log, attualmente in anteprima pubblica.This article explains how to manually configure database migration from SQL Server 2008-2019 to Azure SQL Managed Instance by using Log Replay Service (LRS), currently in public preview. L'archiviazione con archiviazione con accesso in tempo Istanza gestita è un servizio cloud abilitato per SQL SQL Server log shipping.LRS is a cloud service that's enabled for SQL Managed Instance and is based on SQL Server log-shipping technology.

Servizio Migrazione del database di Azure e LRS usano la stessa tecnologia di migrazione sottostante e le stesse API.Azure Database Migration Service and LRS use the same underlying migration technology and the same APIs. Il rilascio dell'archiviazione con archiviazione con accesso in locale consente di abilitare migrazioni personalizzate complesse e l'architettura ibrida tra istanze locali SQL Server SQL Istanza gestita.By releasing LRS, we're further enabling complex custom migrations and hybrid architecture between on-premises SQL Server and SQL Managed Instance.

Quando usare il servizio Riesecuzione logWhen to use Log Replay Service

Quando non è possibile usare Servizio Migrazione del database di Azure per la migrazione, è possibile usare LRS direttamente con PowerShell, i cmdlet dell'interfaccia della riga di comando di Azure o le API per compilare e orchestrare manualmente le migrazioni di database a SQL Istanza gestita.When you can't use Azure Database Migration Service for migration, you can use LRS directly with PowerShell, Azure CLI cmdlets, or APIs to manually build and orchestrate database migrations to SQL Managed Instance.

È possibile prendere in considerazione l'uso dell'LRS nei casi seguenti:You might consider using LRS in the following cases:

  • È necessario un maggiore controllo per il progetto di migrazione del database.You need more control for your database migration project.
  • La tolleranza per i tempi di inattività per il cutover della migrazione è bassa.There's little tolerance for downtime on migration cutover.
  • Il file eseguibile del Servizio Migrazione del database non può essere installato nell'ambiente in uso.The Database Migration Service executable file can't be installed in your environment.
  • Il file eseguibile del Servizio Migrazione del database non ha accesso ai file per i backup del database.The Database Migration Service executable file doesn't have file access to database backups.
  • Non è disponibile alcun accesso al sistema operativo host o non sono disponibili privilegi di amministratore.No access to the host OS is available, or there are no administrator privileges.
  • Non è possibile aprire le porte di rete dall'ambiente in Azure.You can't open network ports from your environment to Azure.
  • Limitazione della larghezza di banda della rete o problemi di blocco del proxy nell'ambiente.Network throttling, or proxy blocking issues in your environment.
  • I backup vengono archiviati direttamente Archiviazione BLOB di Azure tramite TO URL l'opzione .Backups are stored directly to Azure Blob Storage through the TO URL option.
  • È necessario usare backup differenziali.You need to use differential backups.

Nota

È consigliabile automatizzare la migrazione dei database da SQL Server a sql Istanza gestita tramite Servizio Migrazione del database.We recommend automating the migration of databases from SQL Server to SQL Managed Instance by using Database Migration Service. Questo servizio usa lo stesso servizio cloud LRS nel back-end, con log shipping NORECOVERY modalità.This service uses the same LRS cloud service at the back end, with log shipping in NORECOVERY mode. È consigliabile usare manualmente LRS per orchestrare le migrazioni quando il Servizio Migrazione del database non supporta completamente gli scenari.Consider manually using LRS to orchestrate migrations when Database Migration Service doesn't fully support your scenarios.

FunzionamentoHow it works

La compilazione di una soluzione personalizzata usando LRS per eseguire la migrazione dei database nel cloud richiede diversi passaggi di orchestrazione, come illustrato nel diagramma e nella tabella più avanti in questa sezione.Building a custom solution by using LRS to migrate databases to the cloud requires several orchestration steps, as shown in the diagram and table later in this section.

La migrazione consiste nell'eseguire backup completi del database SQL Server con abilitato e copiare i CHECKSUM file di backup Archiviazione BLOB di Azure.The migration consists of making full database backups on SQL Server with CHECKSUM enabled, and copying backup files to Azure Blob Storage. LRS viene usato per ripristinare i file di backup da Archiviazione BLOB a SQL Istanza gestita.LRS is used to restore backup files from Blob Storage to SQL Managed Instance. L'archiviazione BLOB è un'archiviazione intermedia tra SQL Server e sql Istanza gestita.Blob Storage is intermediary storage between SQL Server and SQL Managed Instance.

LRS monitora l'archiviazione BLOB per eventuali nuovi backup differenziali o di log aggiunti dopo il ripristino del backup completo.LRS monitors Blob Storage for any new differential or log backups added after the full backup has been restored. LRS ripristina quindi automaticamente questi nuovi file.LRS then automatically restores these new files. È possibile usare il servizio per monitorare lo stato dei file di backup ripristinati in SQL Istanza gestita ed è possibile arrestare il processo, se necessario.You can use the service to monitor the progress of backup files being restored on SQL Managed Instance, and you can stop the process if necessary.

LRS non richiede una convenzione di denominazione specifica per i file di backup.LRS does not require a specific naming convention for backup files. Analizza tutti i file inseriti in Archiviazione BLOB e costruisce la catena di backup leggendo solo le intestazioni dei file.It scans all files placed on Blob Storage and constructs the backup chain from reading the file headers only. I database sono in uno stato di "ripristino" durante il processo di migrazione.Databases are in a "restoring" state during the migration process. I database vengono ripristinati in modalità NORECOVERY, quindi non possono essere usati per la lettura o la scrittura fino al completamento del processo di migrazione.Databases are restored in NORECOVERY mode, so they can't be used for reading or writing until the migration process is completed.

Se si esegue la migrazione di diversi database, è necessario:If you're migrating several databases, you need to:

  • Inserire i backup per ogni database in una cartella separata in Archiviazione BLOB.Place backups for each database in a separate folder on Blob Storage.
  • Avviare LRS separatamente per ogni database.Start LRS separately for each database.
  • Specificare percorsi diversi per separare le cartelle di Archiviazione BLOB.Specify different paths to separate Blob Storage folders.

È possibile avviare LRS in modalità completamento automatico o continua.You can start LRS in either autocomplete or continuous mode. Quando viene avviata in modalità di completamento automatico, la migrazione verrà completata automaticamente quando è stato ripristinato l'ultimo dei file di backup specificati.When you start it in autocomplete mode, the migration will finish automatically when the last of the specified backup files has been restored. Quando si avvia LRS in modalità continua, il servizio ripristini continuamente tutti i nuovi file di backup aggiunti e la migrazione terminerà solo con il cutover manuale.When you start LRS in continuous mode, the service will continuously restore any new backup files added, and the migration will finish on the manual cutover only.

È consigliabile eseguire manualmente il cut over dopo che è stato eseguito il backup finale della parte finale del log e viene visualizzato come ripristinato in SQL Istanza gestita.We recommend that you manually cut over after the final log-tail backup has been taken and is shown as restored on SQL Managed Instance. Il passaggio finale del cutover rende il database online e disponibile per l'uso in lettura e scrittura in SQL Istanza gestita.The final cutover step will make the database come online and available for read and write use on SQL Managed Instance.

Dopo l'arresto dell'istanza di LRS, automaticamente tramite completamento automatico o manualmente tramite cutover, non è possibile riprendere il processo di ripristino per un database portato online in SQL Istanza gestita.After LRS is stopped, either automatically through autocomplete or manually through cutover, you can't resume the restore process for a database that was brought online on SQL Managed Instance. Per ripristinare file di backup aggiuntivi al termine della migrazione tramite completamento automatico o cutover, è necessario eliminare il database.To restore additional backup files after the migration finishes through autocomplete or cutover, you need to delete the database. È anche necessario ripristinare l'intera catena di backup da zero riavviando LRS.You also need to restore the entire backup chain from scratch by restarting LRS.

Diagramma che illustra i passaggi di orchestrazione del servizio Riesecuzione log per SQL Istanza gestita.

OperazioneOperation DettagliDetails
1. Copiare i backup del database SQL Server nell'archivio BLOB.1. Copy database backups from SQL Server to Blob Storage. Copiare backup completi, differenziali e del log da SQL Server a un contenitore di archiviazione BLOB usando Azcopy o Azure Storage Explorer.Copy full, differential, and log backups from SQL Server to a Blob Storage container by using Azcopy or Azure Storage Explorer.

Usare qualsiasi nome di file.Use any file names. L'LRS non richiede una convenzione di denominazione dei file specifica.LRS doesn't require a specific file-naming convention.

Durante la migrazione di diversi database, è necessaria una cartella separata per ogni database.In migrating several databases, you need a separate folder for each database.
2. Avviare LRS nel cloud.2. Start LRS in the cloud. È possibile riavviare il servizio con una scelta dicmdlet:PowerShell (start-azsqlinstancedatabaselogreplay) o l'interfaccia della riga di comando di Azure ( az_sql_midb_log_replay_start cmdlet ).You can restart the service with a choice of cmdlets: PowerShell (start-azsqlinstancedatabaselogreplay) or Azure CLI (az_sql_midb_log_replay_start cmdlets).

Avviare LRS separatamente per ogni database che punta a una cartella di backup nell'archiviazione BLOB.Start LRS separately for each database that points to a backup folder on Blob Storage.

Dopo l'avvio, il servizio esegue i backup dal contenitore di archiviazione BLOB e avvia il ripristino in SQL Istanza gestita.After you start the service, it will take backups from the Blob Storage container and start restoring them on SQL Managed Instance.

Se l'archiviazione con archiviazione con registrazione locale è stata avviata in modalità continua, dopo il ripristino di tutti i backup caricati inizialmente, il servizio verifica la disponibilità di eventuali nuovi file caricati nella cartella.If you started LRS in continuous mode, after all initially uploaded backups are restored, the service will watch for any new files uploaded to the folder. Il servizio applicherà continuamente i log in base alla catena di numeri di sequenza del file di log (LSN) fino a quando non viene arrestato.The service will continuously apply logs based on the log sequence number (LSN) chain until it's stopped.
2.1. Monitorare lo stato dell'operazione.2.1. Monitor the operation's progress. È possibile monitorare lo stato dell'operazione di ripristino con una scelta dicmdlet:PowerShell (get-azsqlinstancedatabaselogreplay) o l'interfaccia della riga di comando di Azure ( az_sql_midb_log_replay_show cmdlet ).You can monitor progress of the restore operation with a choice of cmdlets: PowerShell (get-azsqlinstancedatabaselogreplay) or Azure CLI (az_sql_midb_log_replay_show cmdlets).
2.2. Arrestare l'operazione se necessario.2.2. Stop the operation if needed. Se è necessario arrestare il processo di migrazione, è possibile scegliere tra cmdlet: PowerShell (stop-azsqlinstancedatabaselogreplay) o interfaccia della riga di comando di Azure (az_sql_midb_log_replay_stop).If you need to stop the migration process, you have a choice of cmdlets: PowerShell (stop-azsqlinstancedatabaselogreplay) or Azure CLI (az_sql_midb_log_replay_stop).

L'arresto dell'operazione eliminerà il database da ripristinare in SQL Istanza gestita.Stopping the operation will delete the database that you're restoring on SQL Managed Instance. Dopo l'arresto di un'operazione, non è possibile riprendere LRS per un database.After you stop an operation, you can't resume LRS for a database. È necessario riavviare il processo di migrazione da zero.You need to restart the migration process from scratch.
3. Eseguire il cut over nel cloud quando si è pronti.3. Cut over to the cloud when you're ready. Arrestare l'applicazione e il carico di lavoro.Stop the application and the workload. Eseguire l'ultimo backup della parte finale del log e caricarlo Archiviazione BLOB di Azure.Take the last log-tail backup and upload it to Azure Blob Storage.

Completare il cutover avviando un'operazione LRS con una scelta di complete cmdlet: PowerShell (complete-azsqlinstancedatabaselogreplay) o interfaccia della riga di comando di Azure az_sql_midb_log_replay_complete.Complete the cutover by initiating an LRS complete operation with a choice of cmdlets: PowerShell (complete-azsqlinstancedatabaselogreplay) or Azure CLI az_sql_midb_log_replay_complete. Questa operazione arresta LRS e fa sì che il database venga online per l'uso in lettura e scrittura in SQL Istanza gestita.This operation will stop LRS and cause the database to come online for read and write use on SQL Managed Instance.

Ridefinire la stringa di connessione dell'applicazione SQL Server a SQL Istanza gestita.Repoint the application connection string from SQL Server to SQL Managed Instance. È necessario orchestrare questo passaggio manualmente, tramite una modifica manuale della stringa di connessione nell'applicazione o automaticamente (ad esempio, se l'applicazione può, ad esempio, leggere la stringa di connessione da una proprietà o da un database).You will need to orchestrate this step yourself, either through a manual connection string change in your application, or automatically (e.g. if your application can, for example, read the connection string from a property, or a database).

Requisiti per iniziareRequirements for getting started

SQL Server latoSQL Server side

  • SQL Server 2008-2019SQL Server 2008-2019
  • Backup completo dei database (uno o più file)Full backup of databases (one or multiple files)
  • Backup differenziale (uno o più file)Differential backup (one or multiple files)
  • Backup del log (non suddiviso per un file di log delle transazioni)Log backup (not split for a transaction log file)
  • CHECKSUM abilitato per i backup (obbligatorio)CHECKSUM enabled for backups (mandatory)

Lato AzureAzure side

  • Modulo Az.SQL di PowerShell versione 2.16.0 o successiva( installato o accessibile tramite Azure Cloud Shell)PowerShell Az.SQL module version 2.16.0 or later (installed or accessed through Azure Cloud Shell)
  • Interfaccia della riga di comando di Azure versione 2.19.0 o successiva(installato)Azure CLI version 2.19.0 or later (installed)
  • Archiviazione BLOB di Azure provisioning del contenitoreAzure Blob Storage container provisioned
  • Token di sicurezza di firma di accesso condiviso con autorizzazioni di lettura ed elenco generate per il contenitore di archiviazione BLOBShared access signature (SAS) security token with read and list permissions generated for the Blob Storage container

Migrazione di più databaseMigration of multiple databases

È necessario inserire i file di backup per database diversi in cartelle separate nell'archivio BLOB.You must place backup files for different databases in separate folders on Blob Storage.

Avviare LRS separatamente per ogni database puntando a una cartella appropriata nell'archivio BLOB.Start LRS separately for each database by pointing to an appropriate folder on Blob Storage. L'LRS può supportare fino a 100 processi di ripristino simultanei per ogni singola istanza gestita.LRS can support up to 100 simultaneous restore processes per single managed instance.

Autorizzazioni del controllo degli accessi in base al ruolo di AzureAzure RBAC permissions

L'esecuzione dell'archiviazione con accesso in remoto tramite i client forniti richiede uno dei ruoli di Azure seguenti:Running LRS through the provided clients requires one of the following Azure roles:

  • Ruolo di Proprietario della sottoscrizioneSubscription Owner role
  • Istanza gestita collaboratoreManaged Instance Contributor role
  • Ruolo personalizzato con l'autorizzazione seguente: Microsoft.Sql/managedInstances/databases/*Custom role with the following permission: Microsoft.Sql/managedInstances/databases/*

Procedure consigliateBest practices

Si consiglia di ricorrere alle seguenti procedure:We recommend the following best practices:

  • Eseguire Data Migration Assistant per verificare che i database siano pronti per la migrazione a SQL Istanza gestita.Run Data Migration Assistant to validate that your databases are ready to be migrated to SQL Managed Instance.
  • Suddividere i backup completi e differenziali in più file, anziché usare un singolo file.Split full and differential backups into multiple files, instead of using a single file.
  • Abilitare la compressione dei backup.Enable backup compression.
  • Usare Cloud Shell per eseguire gli script, perché verrà sempre aggiornato ai cmdlet più recenti rilasciati.Use Cloud Shell to run scripts, because it will always be updated to the latest cmdlets released.
  • Pianificare il completamento della migrazione entro 47 ore dall'avvio dell'istanza di LRS.Plan to complete the migration within 47 hours after you start LRS. Si tratta di un periodo di tolleranza che impedisce l'installazione di patch software gestite dal sistema.This is a grace period that prevents the installation of system-managed software patches.

Importante

  • Non è possibile usare il database ripristinato tramite LRS fino al termine del processo di migrazione.You can't use the database that's being restored through LRS until the migration process finishes.
  • L'archiviazione con accesso in lettura non supporta l'accesso in sola lettura ai database durante la migrazione.LRS doesn't support read-only access to databases during the migration.
  • Al termine della migrazione, il processo di migrazione viene finalizzato perché LRS non supporta la ripresa del processo di ripristino.After migration finishes, the migration process is finalized because LRS doesn't support resuming the restore process.

Passaggi da eseguireSteps to execute

Eseguire backup di SQL ServerMake backups of SQL Server

È possibile eseguire backup di SQL Server usando una delle opzioni seguenti:You can make backups of SQL Server by using either of the following options:

  • Eseguire il backup nell'archiviazione su disco locale e quindi caricare i file Archiviazione BLOB di Azure, se l'ambiente limita i backup diretti all'archiviazione BLOB.Back up to local disk storage, and then upload files to Azure Blob Storage, if your environment restricts direct backups to Blob Storage.
  • Eseguire il backup direttamente nell'archivio BLOB con TO URL l'opzione in T-SQL, se l'ambiente e le procedure di sicurezza lo consentono.Back up directly to Blob Storage with the TO URL option in T-SQL, if your environment and security procedures allow it.

Impostare i database di cui si vuole eseguire la migrazione alla modalità di recupero con registrazione completa per consentire i backup del log.Set databases that you want to migrate to the full recovery mode to allow log backups.

-- To permit log backups, before the full database backup, modify the database to use the full recovery
USE master
ALTER DATABASE SampleDB
SET RECOVERY FULL
GO

Per eseguire manualmente backup completi, differenziali e del log del database nell'archiviazione locale, usare gli script T-SQL di esempio seguenti.To manually make full, differential, and log backups of your database on local storage, use the following sample T-SQL scripts. Assicurarsi che CHECKSUM l'opzione sia abilitata, perché è obbligatoria per l'LRS.Ensure that the CHECKSUM option is enabled, because it's mandatory for LRS.

-- Example of how to make a full database backup to the local disk
BACKUP DATABASE [SampleDB]
TO DISK='C:\BACKUP\SampleDB_full.bak'
WITH INIT, COMPRESSION, CHECKSUM
GO

-- Example of how to make a differential database backup to the local disk
BACKUP DATABASE [SampleDB]
TO DISK='C:\BACKUP\SampleDB_diff.bak'
WITH DIFFERENTIAL, COMPRESSION, CHECKSUM
GO

-- Example of how to make a transactional log backup to the local disk
BACKUP LOG [SampleDB]
TO DISK='C:\BACKUP\SampleDB_log.trn'
WITH COMPRESSION, CHECKSUM
GO

Creare un account di archiviazioneCreate a storage account

Archiviazione BLOB di Azure viene usato come archivio intermedio per i file di backup tra SQL Server e SQL Istanza gestita.Azure Blob Storage is used as intermediary storage for backup files between SQL Server and SQL Managed Instance. Per creare un nuovo account di archiviazione e un contenitore BLOB all'interno dell'account di archiviazione, seguire questa procedura:To create a new storage account and a blob container inside the storage account, follow these steps:

  1. Creare un account di archiviazione.Create a storage account.
  2. Creare un contenitore BLOB all'interno dell'account di archiviazione.Crete a blob container inside the storage account.

Copiare i backup da SQL Server nell'archivio BLOBCopy backups from SQL Server to Blob Storage

Durante la migrazione dei database a un'istanza gestita tramite l'archiviazione con accesso in lettura, è possibile usare gli approcci seguenti per caricare i backup nell'archiviazione BLOB:In migrating databases to a managed instance by using LRS, you can use the following approaches to upload backups to Blob Storage:

Eseguire backup da un SQL Server direttamente all'archivio BLOBMake backups from SQL Server directly to Blob Storage

Se i criteri aziendali e di rete lo consentono, un'alternativa consiste nell'eseguire backup da SQL Server direttamente all'archiviazione BLOB usando l'opzione backup to URL nativa SQL Server.If your corporate and network policies allow it, an alternative is to make backups from SQL Server directly to Blob Storage by using the SQL Server native BACKUP TO URL option. Se è possibile usare questa opzione, non è necessario eseguire backup nell'archiviazione locale e caricarli nell'archivio BLOB.If you can pursue this option, you don't need to make backups on the local storage and upload them to Blob Storage.

Come primo passaggio, per questa operazione è necessario generare un token di autenticazione di firma di accesso condiviso per l'archiviazione BLOB e quindi importare il token in SQL Server.As the first step, this operation requires you to generate an SAS authentication token for Blob Storage and then import the token to SQL Server. Il secondo passaggio consiste nell'eseguire backup con TO URL l'opzione in T-SQL.The second step is to make backups with the TO URL option in T-SQL. Assicurarsi che tutti i backup siano evasi con CHEKSUM l'opzione abilitata.Ensure that all backups are made with the CHEKSUM option enabled.

Per riferimento, il codice di esempio seguente esegue backup nell'archivio BLOB.For reference, the following sample code makes backups to Blob Storage. Questo esempio non include istruzioni su come importare il token di firma di accesso condiviso.This example does not include instructions on how to import the SAS token. È possibile trovare istruzioni dettagliate, tra cui come generare e importare il token di firma di accesso condiviso in SQL Server, nell'esercitazione Usare Archiviazione BLOB di Azure con SQL Server.You can find detailed instructions, including how to generate and import the SAS token to SQL Server, in the tutorial Use Azure Blob Storage with SQL Server.

-- Example of how to make a full database backup to a URL
BACKUP DATABASE [SampleDB]
TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/SampleDB_full.bak'
WITH INIT, COMPRESSION, CHECKSUM
GO
-- Example of how to make a differential database backup to a URL
BACKUP DATABASE [SampleDB]
TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/SampleDB_diff.bak'  
WITH DIFFERENTIAL, COMPRESSION, CHECKSUM
GO

-- Example of how to make a transactional log backup to a URL
BACKUP LOG [SampleDB]
TO URL = 'https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>/SampleDB_log.trn'  
WITH COMPRESSION, CHECKSUM

Generare un token di autenticazione di firma di accesso condiviso dell'archiviazione BLOB per l'archiviazione con registrazione localeGenerate a Blob Storage SAS authentication token for LRS

Archiviazione BLOB di Azure viene usato come archivio intermedio per i file di backup tra SQL Server e SQL Istanza gestita.Azure Blob Storage is used as intermediary storage for backup files between SQL Server and SQL Managed Instance. È necessario generare un token di autenticazione di firma di accesso condiviso, con solo autorizzazioni di elenco e lettura, per l'accesso in lettura.You need to generate an SAS authentication token, with only list and read permissions, for LRS. Il token consentirà all'archiviazione con registrazione locale di accedere all'archiviazione BLOB e di usare i file di backup per ripristinarli in SQL Istanza gestita.The token will enable LRS to access Blob Storage and use the backup files to restore them on SQL Managed Instance.

Per generare il token, seguire questa procedura:Follow these steps to generate the token:

  1. Aprire Storage Explorer dal portale di Azure.Open Storage Explorer from the Azure portal.

  2. Espandere Contenitori BLOB.Expand Blob Containers.

  3. Fare clic con il pulsante destro del mouse sul contenitore BLOB e scegliere Ottieni firma di accesso condiviso.Right-click the blob container and select Get Shared Access Signature.

    Screenshot che mostra le selezioni per la generazione di un token di autenticazione S A S.

  4. Selezionare l'intervallo di tempo per la scadenza del token.Select the timeframe for token expiration. Assicurarsi che il token sia valido per la durata della migrazione.Ensure that the token is valid for the duration of your migration.

  5. Selezionare il fuso orario per il token: UTC o ora locale.Select the time zone for the token: UTC or your local time.

    Importante

    Il fuso orario del token e l'istanza gestita potrebbero non essere corrispondenti.The time zone of the token and your managed instance might mismatch. Assicurarsi che il token di firma di accesso condiviso abbia la validità temporale appropriata, tenendo in considerazione i fusi orari.Ensure that the SAS token has the appropriate time validity, taking time zones into consideration. Se possibile, impostare il fuso orario su un'ora precedente e successiva dell'intervallo di migrazione pianificato.If possible, set the time zone to an earlier and later time of your planned migration window.

  6. Selezionare Sola lettura ed Elenca autorizzazioni.Select Read and List permissions only.

    Importante

    Non selezionare altre autorizzazioni.Don't select any other permissions. In caso contrario, LRS non verrà avviato.If you do, LRS won't start. Questo requisito di sicurezza è di progettazione.This security requirement is by design.

  7. Selezionare Crea.Select Create.

    Screenshot che mostra le selezioni per la scadenza del token S A S, il fuso orario e le autorizzazioni, insieme al pulsante Crea.

L'autenticazione di firma di accesso condiviso viene generata con la validità dell'ora specificata.The SAS authentication is generated with the time validity that you specified. È necessaria la versione URI del token, come illustrato nello screenshot seguente.You need the URI version of the token, as shown in the following screenshot.

Screenshot che mostra un esempio della versione U R I di un token S A S.

Copiare i parametri dal token di firma di accesso condivisoCopy parameters from the SAS token

Prima di usare il token di firma di accesso condiviso per avviare LRS, è necessario comprenderne la struttura.Before you use the SAS token to start LRS, you need to understand its structure. L'URI del token di firma di accesso condiviso generato è costituito da due parti separate da un punto interrogativo ( ? ), come illustrato in questo esempio:The URI of the generated SAS token consists of two parts separated with a question mark (?), as shown in this example:

Esempio di U R I per un token S A S generato per il servizio Di riesecuzione log.

La prima parte, a partire da fino al punto interrogativo ( ), viene usata per il parametro immesso https:// ? come input per StorageContainerURI LRS.The first part, starting with https:// until the question mark (?), is used for the StorageContainerURI parameter that's fed as in input to LRS. Fornisce informazioni LRS sulla cartella in cui sono archiviati i file di backup del database.It gives LRS information about the folder where database backup files are stored.

La seconda parte, a partire dal punto interrogativo ( ) e fino alla fine della ? stringa, è il StorageContainerSasToken parametro .The second part, starting after the question mark (?) and going all the way until the end of the string, is the StorageContainerSasToken parameter. Si tratta del token di autenticazione firmato effettivo, valido per la durata dell'ora specificata.This is the actual signed authentication token, which is valid for the duration of the specified time. Questa parte non deve necessariamente iniziare con sp= come illustrato nell'esempio.This part does not necessarily need to start with sp= as shown in the example. Il caso potrebbe essere diverso.Your case might differ.

Copiare i parametri come indicato di seguito:Copy the parameters as follows:

  1. Copiare la prima parte del token, a partire da tutto https:// fino al punto interrogativo ( ? ).Copy the first part of the token, starting from https:// all the way until the question mark (?). Usarlo come parametro in StorageContainerUri PowerShell o nell'interfaccia della riga di comando di Azure per avviare LRS.Use it as the StorageContainerUri parameter in PowerShell or the Azure CLI for starting LRS.

    Screenshot che mostra la copia della prima parte del token.

  2. Copiare la seconda parte del token, a partire dal punto interrogativo ( ) fino ? alla fine della stringa.Copy the second part of the token, starting from the question mark (?) all the way until the end of the string. Usarlo come parametro in StorageContainerSasToken PowerShell o nell'interfaccia della riga di comando di Azure per avviare LRS.Use it as the StorageContainerSasToken parameter in PowerShell or the Azure CLI for starting LRS.

    Screenshot che mostra la copia della seconda parte del token.

Nota

Non includere il punto interrogativo quando si copia una delle due parti del token.Don't include the question mark when you copy either part of the token.

Accedere ad Azure e selezionare una sottoscrizioneLog in to Azure and select a subscription

Usare il cmdlet di PowerShell seguente per accedere ad Azure:Use the following PowerShell cmdlet to log in to Azure:

Login-AzAccount

Selezionare la sottoscrizione appropriata in cui risiede l'istanza gestita usando il cmdlet di PowerShell seguente:Select the appropriate subscription where your managed instance resides by using the following PowerShell cmdlet:

Select-AzSubscription -SubscriptionId <subscription ID>

Avviare la migrazioneStart the migration

Avviare la migrazione avviando l'istanza di LRS.You start the migration by starting LRS. È possibile avviare il servizio in modalità di completamento automatico o continua.You can start the service in either autocomplete or continuous mode.

Quando si usa la modalità di completamento automatico, la migrazione viene completata automaticamente quando viene ripristinato l'ultimo dei file di backup specificati.When you use autocomplete mode, the migration will finish automatically when the last of the specified backup files has been restored. Questa opzione richiede il comando start per specificare il nome file dell'ultimo file di backup.This option requires the start command to specify the filename of the last backup file.

Quando si usa la modalità continua, il servizio ripristini continuamente tutti i nuovi file di backup aggiunti.When you use continuous mode, the service will continuously restore any new backup files that were added. La migrazione verrà completata solo con il cutover manuale.The migration will finish on the manual cutover only.

Avviare l'istanza di LRS in modalità di completamento automaticoStart LRS in autocomplete mode

Per avviare LRS in modalità di completamento automatico, usare i comandi di PowerShell o dell'interfaccia della riga di comando di Azure seguenti.To start LRS in autocomplete mode, use the following PowerShell or Azure CLI commands. Specificare il nome dell'ultimo file di backup usando il -LastBackupName parametro .Specify the last backup file name by using the -LastBackupName parameter. Al momento del ripristino dell'ultimo dei file di backup specificati, il servizio avvierà automaticamente un cutover.Upon restoring the last of the specified backup files, the service will automatically initiate a cutover.

Di seguito è riportato un esempio di avvio dell'istanza di LRS in modalità di completamento automatico tramite PowerShell:Here's an example of starting LRS in autocomplete mode by using PowerShell:

Start-AzSqlInstanceDatabaseLogReplay -ResourceGroupName "ResourceGroup01" `
    -InstanceName "ManagedInstance01" `
    -Name "ManagedDatabaseName" `
    -Collation "SQL_Latin1_General_CP1_CI_AS" `
    -StorageContainerUri "https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>" `
    -StorageContainerSasToken "sv=2019-02-02&ss=b&srt=sco&sp=rl&se=2023-12-02T00:09:14Z&st=2019-11-25T16:09:14Z&spr=https&sig=92kAe4QYmXaht%2Fgjocqwerqwer41s%3D" `
    -AutoCompleteRestore `
    -LastBackupName "last_backup.bak"

Di seguito è riportato un esempio di avvio dell'archiviazione con archiviazione con accesso in lettura in modalità di completamento automatico tramite l'interfaccia della riga di comando di Azure:Here's an example of starting LRS in autocomplete mode by using the Azure CLI:

az sql midb log-replay start -g mygroup --mi myinstance -n mymanageddb -a --last-bn "backup.bak"
    --storage-uri "https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>"
    --storage-sas "sv=2019-02-02&ss=b&srt=sco&sp=rl&se=2023-12-02T00:09:14Z&st=2019-11-25T16:09:14Z&spr=https&sig=92kAe4QYmXaht%2Fgjocqwerqwer41s%3D"

Avviare l'istanza di LRS in modalità continuaStart LRS in continuous mode

Di seguito è riportato un esempio di avvio dell'istanza di LRS in modalità continua tramite PowerShell:Here's an example of starting LRS in continuous mode by using PowerShell:

Start-AzSqlInstanceDatabaseLogReplay -ResourceGroupName "ResourceGroup01" `
    -InstanceName "ManagedInstance01" `
    -Name "ManagedDatabaseName" `
    -Collation "SQL_Latin1_General_CP1_CI_AS" -StorageContainerUri "https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>" `
    -StorageContainerSasToken "sv=2019-02-02&ss=b&srt=sco&sp=rl&se=2023-12-02T00:09:14Z&st=2019-11-25T16:09:14Z&spr=https&sig=92kAe4QYmXaht%2Fgjocqwerqwer41s%3D"

Di seguito è riportato un esempio di avvio dell'archiviazione con archiviazione con accesso in modalità continua tramite l'interfaccia della riga di comando di Azure:Here's an example of starting LRS in continuous mode by using the Azure CLI:

az sql midb log-replay start -g mygroup --mi myinstance -n mymanageddb
    --storage-uri "https://<mystorageaccountname>.blob.core.windows.net/<mycontainername>"
    --storage-sas "sv=2019-02-02&ss=b&srt=sco&sp=rl&se=2023-12-02T00:09:14Z&st=2019-11-25T16:09:14Z&spr=https&sig=92kAe4QYmXaht%2Fgjocqwerqwer41s%3D"

I client PowerShell e dell'interfaccia della riga di comando per avviare l'istanza di LRS in modalità continua sono sincroni.PowerShell and CLI clients to start LRS in continuous mode are synchronous. Ciò significa che i client attenderanno che la risposta dell'API segnala l'esito positivo o negativo dell'avvio del processo.This means that clients will wait for the API response to report on success or failure to start the job.

Durante questa attesa, il comando non restituirà il controllo al prompt dei comandi.During this wait, the command won't return control to the command prompt. Se si esegue lo script dell'esperienza di migrazione ed è necessario il comando di avvio dell'istanza di LRS per ridare immediatamente il controllo per continuare con il resto dello script, è possibile eseguire PowerShell come processo in background con l'opzione -AsJob .If you're scripting the migration experience, and you need the LRS start command to give back control immediately to continue with rest of the script, you can run PowerShell as a background job with the -AsJob switch. Ad esempio:For example:

$lrsjob = Start-AzSqlInstanceDatabaseLogReplay <required parameters> -AsJob

Quando si avvia un processo in background, un oggetto processo viene restituito immediatamente, anche se il completamento del processo richiede molto tempo.When you start a background job, a job object returns immediately, even if the job takes an extended time to finish. È possibile continuare a lavorare nella sessione senza interruzioni durante l'esecuzione del processo.You can continue to work in the session without interruption while the job runs. Per informazioni dettagliate sull'esecuzione di PowerShell come processo in background, vedere la documentazione di PowerShell Start-Job.For details on running PowerShell as a background job, see the PowerShell Start-Job documentation.

Analogamente, per avviare un comando dell'interfaccia della riga di comando di Azure in Linux come processo in background, usare la e commerciale ( ) alla fine del comando di avvio & dell'archiviazione con archiviazione con registrazione remota:Similarly, to start an Azure CLI command on Linux as a background process, use the ampersand (&) at the end of the LRS start command:

az sql midb log-replay start <required parameters> &

Importante

Dopo l'avvio di LRS, tutte le patch software gestite dal sistema vengono arrestate per 47 ore.After you start LRS, any system-managed software patches are halted for 47 hours. Dopo questa finestra, la successiva patch software automatizzata arresterà automaticamente LRS.After this window, the next automated software patch will automatically stop LRS. In questo caso, non è possibile riprendere la migrazione ed è necessario riavviarla da zero.If that happens, you can't resume migration and need to restart it from scratch.

Monitorare lo stato di avanzamento della migrazioneMonitor the migration progress

Per monitorare lo stato di avanzamento della migrazione tramite PowerShell, usare il comando seguente:To monitor the progress of the migration through PowerShell, use the following command:

Get-AzSqlInstanceDatabaseLogReplay -ResourceGroupName "ResourceGroup01" `
    -InstanceName "ManagedInstance01" `
    -Name "ManagedDatabaseName"

Per monitorare lo stato di avanzamento della migrazione tramite l'interfaccia della riga di comando di Azure, usare il comando seguente:To monitor the progress of the migration through the Azure CLI, use the following command:

az sql midb log-replay show -g mygroup --mi myinstance -n mymanageddb

Arrestare la migrazioneStop the migration

Se è necessario arrestare la migrazione, usare i cmdlet seguenti.If you need to stop the migration, use the following cmdlets. L'arresto della migrazione eliminerà il database in Istanza gestita SQL, quindi la ripresa della migrazione non sarà possibile.Stopping the migration will delete the restoring database on SQL Managed Instance, so resuming the migration won't be possible.

Per arrestare il processo di migrazione tramite PowerShell, usare il comando seguente:To stop the migration process through PowerShell, use the following command:

Stop-AzSqlInstanceDatabaseLogReplay -ResourceGroupName "ResourceGroup01" `
    -InstanceName "ManagedInstance01" `
    -Name "ManagedDatabaseName"

Per arrestare il processo di migrazione tramite l'interfaccia della riga di comando di Azure, usare il comando seguente:To stop the migration process through the Azure CLI, use the following command:

az sql midb log-replay stop -g mygroup --mi myinstance -n mymanageddb

Completare la migrazione (modalità continua)Complete the migration (continuous mode)

Se è stata avviata l'archiviazione con registrazione differenziale in modalità continua, dopo aver eseguito il ripristino di tutti i backup, l'avvio del cutover completerà la migrazione.If you started LRS in continuous mode, after you've ensured that all backups have been restored, initiating the cutover will complete the migration. Dopo il cutover, il database verrà migrato e pronto per l'accesso in lettura e scrittura.After the cutover, the database will be migrated and ready for read and write access.

Per completare il processo di migrazione in modalità continua LRS tramite PowerShell, usare il comando seguente:To complete the migration process in LRS continuous mode through PowerShell, use the following command:

Complete-AzSqlInstanceDatabaseLogReplay -ResourceGroupName "ResourceGroup01" `
-InstanceName "ManagedInstance01" `
-Name "ManagedDatabaseName" `
-LastBackupName "last_backup.bak"

Per completare il processo di migrazione in modalità continua LRS tramite l'interfaccia della riga di comando di Azure, usare il comando seguente:To complete the migration process in LRS continuous mode through the Azure CLI, use the following command:

az sql midb log-replay complete -g mygroup --mi myinstance -n mymanageddb --last-backup-name "backup.bak"

Limitazioni funzionaliFunctional limitations

Le limitazioni funzionali dell'istanza di LRS sono:Functional limitations of LRS are:

  • Il database da ripristinare non può essere usato per l'accesso in sola lettura durante il processo di migrazione.The database that you're restoring can't be used for read-only access during the migration process.
  • Le patch software gestite dal sistema vengono bloccate per 47 ore dopo l'avvio di LRS.System-managed software patches are blocked for 47 hours after you start LRS. Dopo la scadenza di questo intervallo di tempo, l'aggiornamento software successivo arresterà LRS.After this time window expires, the next software update will stop LRS. È quindi necessario riavviare l'istanza di LRS da zero.You then need to restart LRS from scratch.
  • L'archiviazione con archiviazione con SQL Server database deve essere sottoposto a backup con CHECKSUM l'opzione abilitata.LRS requires databases on SQL Server to be backed up with the CHECKSUM option enabled.
  • Il token di firma di accesso condiviso che verrà utilizzato dall'archiviazione con accesso condiviso deve essere generato per l'intero contenitore Archiviazione BLOB di Azure e deve avere solo autorizzazioni di lettura ed elenco.The SAS token that LRS will use must be generated for the entire Azure Blob Storage container, and it must have only read and list permissions.
  • I file di backup per database diversi devono essere inseriti in cartelle separate nell'archivio BLOB.Backup files for different databases must be placed in separate folders on Blob Storage.
  • L'archiviazione con archiviazione con archiviazione locale deve essere avviata separatamente per ogni database che punta a cartelle separate con file di backup nell'archiviazione BLOB.LRS must be started separately for each database that points to separate folders with backup files on Blob Storage.
  • L'LRS può supportare fino a 100 processi di ripristino simultanei per ogni singola istanza gestita.LRS can support up to 100 simultaneous restore processes per single managed instance.

Risoluzione dei problemiTroubleshooting

Dopo aver avviato l'istanza di LRS, usare il cmdlet di monitoraggio ( get-azsqlinstancedatabaselogreplay o ) per visualizzare lo stato az_sql_midb_log_replay_show dell'operazione.After you start LRS, use the monitoring cmdlet (get-azsqlinstancedatabaselogreplay or az_sql_midb_log_replay_show) to see the status of the operation. Se LRS non viene avviato dopo un certo periodo di tempo e viene visualizzato un errore, verificare la presenza dei problemi più comuni:If LRS fails to start after some time and you get an error, check for the most common issues:

  • Un database esistente in SQL Istanza gestita ha lo stesso nome di quello di cui si sta tentando di eseguire la migrazione da SQL Server?Does an existing database on SQL Managed Instance have the same name as the one you're trying to migrate from SQL Server? Risolvere il conflitto rinominando uno dei database.Resolve this conflict by renaming one of databases.
  • Il backup del database in SQL Server eseguito tramite CHECKSUM l'opzione ?Was the database backup on SQL Server made via the CHECKSUM option?
  • Le autorizzazioni per il token di firma di accesso condiviso sono di sola lettura ed elenco per LRS?Are the permissions on the SAS token only read and list for LRS?
  • Il token di firma di accesso condiviso per LRS è stato copiato dopo il punto interrogativo ( ? ), con contenuto che inizia come il seguente: sv=2020-02-10... ? ÂDid you copy the SAS token for LRS after the question mark (?), with content starting like this: sv=2020-02-10...
  • Il tempo di validità del token di firma di accesso condiviso è applicabile per l'intervallo di tempo di avvio e completamento della migrazione?Is the SAS token validity time applicable for the time window of starting and completing the migration? È possibile che non siano presenti corrispondenze a causa dei diversi fusi orari usati per sql Istanza gestita e il token di firma di accesso condiviso.There might be mismatches due to the different time zones used for SQL Managed Instance and the SAS token. Provare a rigenerare il token di firma di accesso condiviso ed estendere la validità del token dell'intervallo di tempo prima e dopo la data corrente.Try regenerating the SAS token and extending the token validity of the time window before and after the current date.
  • Il nome del database, il nome del gruppo di risorse e il nome dell'istanza gestita sono stati digitati correttamente?Are the database name, resource group name, and managed instance name spelled correctly?
  • Se è stato avviato LRS in modalità di completamento automatico, è stato specificato un nome file valido per l'ultimo file di backup?If you started LRS in autocomplete mode, was a valid filename for the last backup file specified?

Passaggi successiviNext steps