File di dati di SQL Server in Microsoft AzureSQL Server data files in Microsoft Azure

File di dati in AzureData files on Azure

Con i file di dati di SQL Server in Microsoft Azure viene abilitato il supporto nativo dei file di database di SQL Server archiviati come BLOB di Microsoft Azure.SQL Server Data Files in Microsoft Azure enables native support for SQL Server database files stored as Microsoft Azure Blobs. È possibile creare un database di SQL Server in esecuzione in locale o in una macchina virtuale in Microsoft Azure con un percorso di archiviazione dedicato per i dati nel servizio di archiviazione BLOB di Microsoft Azure.It allows you to create a database in SQL Server running in on-premises or in a virtual machine in Microsoft Azure with a dedicated storage location for your data in Microsoft Azure Blob Storage. Questo miglioramento semplifica in particolar modo lo spostamento di database tra computer mediante le operazioni di collegamento e scollegamento.This enhancement especially simplifies to move databases between machines by using detach and attach operations. Rende inoltre disponibile un percorso di archiviazione alternativo per i file di backup del database consentendo di eseguire il ripristino da o nel servizio di archiviazione di Microsoft Azure.In addition, it provides an alternative storage location for your database backup files by allowing you to restore from or to Microsoft Azure Storage. Pertanto, rende possibile l'utilizzo di diverse soluzioni ibride offrendo numerosi vantaggi per la virtualizzazione dei dati, lo spostamento dei dati, la sicurezza e la disponibilità nonché costi moderatamente bassi e manutenzione per una disponibilità elevata e una scalabilità elastica.Therefore, it enables several hybrid solutions by providing several benefits for data virtualization, data movement, security and availability, and any easy low costs and maintenance for high-availability and elastic scaling.

Importante

L'archiviazione dei database di sistema nell'archiviazione BLOB di Azure non è consigliata e non è supportata.Storing system databases in Azure blob storage is not recommended and is not supported.

Questo argomento illustra concetti e considerazioni fondamentali per archiviare i file di dati di SQL Server nel servizio di archiviazione di Microsoft Azure.This topic introduces concepts and considerations that are central to storing SQL Server data files in Microsoft Azure Storage Service.

Per un'esperienza pratica diretta su come usare questa nuova funzionalità, vedere Esercitazione: Uso del servizio di archiviazione BLOB di Microsoft Azure con i database di SQL Server 2016 .For a practical hands-on experience on how to use this new feature, see Tutorial: Using the Microsoft Azure Blob storage service with SQL Server 2016 databases .

Perché usare i file di dati di SQL Server in Microsoft Azure?Why use SQL Server data files in Microsoft Azure?

  • Vantaggi di una migrazione rapida e semplice: questa funzionalità semplifica il processo di migrazione spostando un database alla volta tra computer locali nonché tra l'ambiente locale e l'ambiente cloud senza alcuna modifica alle applicazioni.Easy and fast migration benefits: This feature simplifies the migration process by moving one database at a time between machines in on-premises as well as between on-premises and cloud environments without any application changes. Pertanto, supporta una migrazione incrementale senza influire sull'infrastruttura locale esistente.Therefore, it supports an incremental migration while maintaining your existing on-premises infrastructure in place. Inoltre, l'accesso a un'archiviazione dati centralizzata semplifica la logica dell'applicazione quando un'applicazione deve essere eseguita in più posizioni in un ambiente locale.In addition, having access to a centralized data storage simplifies the application logic when an application needs to run in multiple locations in an on-premises environment. In alcuni casi, potrebbe essere necessario installare rapidamente centri di calcolo in località geografiche diverse per la raccolta di dati da molte origini diverse.In some cases, you may need to rapidly setup computer centers in geographically dispersed locations, which gather data from many different sources. Tramite questa nuova funzionalità avanzata, anziché spostare dati da una posizione all'altra, è possibile archiviare molti database come oggetti BLOB di Microsoft Azure e quindi eseguire script Transact-SQL per creare i database in computer locali o in macchine virtuali.By using this new enhancement, instead of moving data from one location to another, you can store many databases as Microsoft Azure blobs, and then run Transact-SQL scripts to create databases on the local machines or virtual machines.

  • Vantaggi dell'archiviazione senza limiti e senza costi: con questa funzionalità è possibile accedere a capacità di archiviazione esterne illimitate in Microsoft Azure, sfruttando al contempo le risorse di calcolo locali.Cost and limitless storage benefits: This feature enables you to have limitless off-site storage in Microsoft Azure while leveraging on-premises compute resources. Quando si usa Microsoft Azure come posizione di archiviazione, è possibile concentrarsi sulla logica dell'applicazione senza l'overhead della gestione dell'hardware.When you use Microsoft Azure as a storage location, you can easily focus on the application logic without the overhead of hardware management. Se si perde un nodo di calcolo locale, è possibile configurarne uno nuovo senza alcuno spostamento dei dati.If you lose a computation node on-premises, you can set up a new one without any data movement.

  • Vantaggi della disponibilità elevata e del ripristino di emergenza: con la funzionalità relativa ai file di dati di SQL Server in Microsoft Azure è possibile semplificare le soluzioni per la disponibilità elevata e il ripristino di emergenza.High availability and disaster recovery benefits: Using SQL Server Data Files in Microsoft Azure feature might simplify the high availability and disaster recovery solutions. Se ad esempio una macchina virtuale in Microsoft Azure o un'istanza di SQL Server si arresta in modo anomalo, è possibile ricreare i database in una nuova istanza di SQL Server semplicemente ristabilendo i collegamenti agli oggetti BLOB di Microsoft Azure.For example, if a virtual machine in Microsoft Azure or an instance of SQL Server crashes, you can re-create your databases in a new SQL Server instance by just re-establishing links to Microsoft Azure Blobs.

  • Vantaggi di sicurezza: il nuovo miglioramento consente di separare un'istanza di calcolo da un'istanza di archiviazione.Security benefits: This new enhancement allows you to separate a compute instance from a storage instance. È possibile disporre di un database completamente crittografato da decrittografare solo in un'istanza di calcolo e non in un'istanza di archiviazione.You can have a fully encrypted database with decryption only occurring on compute instance but not in a storage instance. In altri termini, usando questa nuova funzionalità avanzata è possibile crittografare tutti i dati in un cloud pubblico tramite i certificati TDE (Transparent Data Encryption) che sono separati fisicamente dai dati.In other words, using this new enhancement, you can encrypt all data in public cloud using Transparent Data Encryption (TDE) certificates, which are physically separated from the data. Le chiavi TDE possono essere archiviate nel database master, che viene archiviato in locale nel computer fisicamente protetto in locale e di cui viene eseguito un backup in locale.The TDE keys can be stored in the master database, which is stored locally in your physically secure on-premises computer and backed up locally. È possibile usare queste chiavi locali per crittografare i dati che risiedono nel servizio di archiviazione di Microsoft Azure.You can use these local keys to encrypt the data, which resides in Microsoft Azure Storage. Se le credenziali dell'account di archiviazione del cloud vengono rubate, i dati rimangono protetti perché i certificati TDE risiedono sempre in locale.If your cloud storage account credentials are stolen, your data still stays secure as the TDE certificates always reside in on-premises.

  • Backup di snapshot: questa funzionalità consente di usare gli snapshot di Azure per offrire backup quasi istantanei e ripristini più veloci per i file di database archiviati usando il servizio di archiviazione BLOB di Azure.Snapshot backup: This feature enables you to use Azure snapshots to provide nearly instantaneous backups and quicker restores for database files stored using the Azure Blob storage service. Questa funzionalità consente di semplificare i criteri di backup e ripristino.This capability enables you to simplify your backup and restore policies. Per altre informazioni, vedere Backup di snapshot di file per i file di database in Azure.For more information, see File-Snapshot Backups for Database Files in Azure.

Concetti e requisitiConcepts and Requirements

Concetti relativi ad Archiviazione di AzureAzure Storage Concepts

Quando si usa la funzionalità relativa ai file di dati SQL Server in Microsoft Azure, è necessario creare un account di archiviazione e un contenitore in Microsoft Azure.When using SQL Server Data Files in Windows Azure feature, you need to create a storage account and a container in Windows Azure. Quindi, è necessario creare credenziali di SQL Server in cui includere le informazioni sui criteri del contenitore nonché una firma di accesso condiviso, necessaria per accedere al contenitore.Then, you need to create a SQL Server credential, which includes information on the policy of the container as well as a shared access signature that is necessary to access the container.

In Microsoft Azure, un account di archiviazione di Azure rappresenta il livello più elevato dello spazio dei nomi per accedere agli oggetti BLOB.In Microsoft Azure, an Azure storage account represents the highest level of the namespace for accessing Blobs. Un account di archiviazione può contenere un numero illimitato di contenitori, purché la dimensione totale sia minore dei limiti di archiviazione.A storage account can contain an unlimited number of containers, as long as their total size is below the storage limits. Per le informazioni più recenti sui limiti di archiviazione, vedere Sottoscrizione di Azure e limiti, quote e vincoli dei servizi.For the latest information on storage limits, see Azure Subscription and Service Limits, Quotas, and Constraints. Un contenitore fornisce un raggruppamento di un set di oggetti BLOB.A container provides a grouping of a set of Blobs. Tutti gli oggetti BLOB devono essere inclusi in un contenitore.All Blobs must be in a container. Un account può contenere un numero illimitato di contenitori.An account can contain an unlimited number of containers. Analogamente, in un contenitore è possibile archiviare un numero illimitato di oggetti BLOB.Similarly, a container can store an unlimited number of Blobs as well. Esistono due tipi di oggetti BLOB che è possibile archiviare in Archiviazione di Azure: BLOB in blocchi e BLOB di pagine.There are two types of blobs that can be stored in Azure Storage: block and page blobs. Questa nuova funzionalità usa i BLOB di pagine, che sono più efficienti quando gli intervalli di byte in un file vengono modificati spesso.This new feature uses Page blobs, which are more efficient when ranges of bytes in a file are modified frequently. È possibile accedere agli oggetti BLOB utilizzando il seguente formato di URL: http://storageaccount.blob.core.windows.net/<container>/<blob>.You can access Blobs using the following URL format: http://storageaccount.blob.core.windows.net/<container>/<blob>.

Considerazioni sulla fatturazione in AzureAzure billing considerations

La stima dei costi associati all'uso dei servizi Azure è un aspetto importante del processo decisionale e di pianificazione.Estimating the cost of using Azure Services is an important matter in the decision making and planning process. Quando si archiviano file di dati di SQL Server in Archiviazione di Azure, è necessario pagare i costi associati all'archiviazione e alle transazioni.When storing SQL Server data files in Azure Storage, you need to pay costs associated with storage and transactions. Inoltre, l'implementazione della funzionalità relativa ai file di dati di SQL Server in Archiviazione di Azure richiede il rinnovo del lease di un oggetto BLOB ogni 45-60 secondi in modo implicito.In addition, the implementation of SQL Server Data Files in Azure Storage feature requires a renewal of Blob lease every 45 to 60 seconds implicitly. Questa operazione comporta dei costi di transazione per ogni file di database, ad esempio per i file con estensione MDF o LDF.This also results in transaction costs per database file, such as .mdf or .ldf. Usare le informazioni disponibili nella pagina Prezzi di Azure per calcolare i costi mensili associati all'uso di Archiviazione di Azure e Macchine virtuali di Azure.Use the information on the Azure Pricing page to help estimate the monthly costs associated with the use of Azure Storage and Azure Virtual Machines.

Concetti relativi a SQL ServerSQL Server concepts

Quando si usa questa nuova funzionalità avanzata, è necessario eseguire le operazioni seguenti:When using this new enhancement, you are required to do the followings:

  • È necessario creare i criteri in un contenitore nonché generare una chiave di firma di accesso condiviso (SAS, Shared Access Signature).You must create a policy on a container and also generate a shared access signature (SAS) key.

  • Per ogni contenitore usato da un file di dati o di log, è necessario creare credenziali di SQL Server il cui nome corrisponda al percorso del contenitore.For each container used by a data or a log file, you must create a SQL Server Credential whose name matches the container path.

  • È necessario archiviare le informazioni relative al contenitore di Archiviazione di Azure, il nome dei criteri e la chiave SAS associati nell'archivio delle credenziali di SQL Server.You must store the information regarding Azure Storage container, its associated policy name, and SAS key in the SQL Server credential store.

    Nell'esempio seguente si presuppone che un contenitore di archiviazione di Azure sia stato creato e che i criteri siano stati creati con diritti di lettura, scrittura ed elenco.The following example assumes that an Azure storage container has been created, and a policy has been created with read, write, list, rights. La creazione dei criteri in un contenitore genera una chiave SAS che può essere conservata non crittografata in memoria e che è richiesta da SQL Server per accedere ai file BLOB nel contenitore.Creating a policy on a container generates a SAS key which is safe to keep unencrypted in memory and needed by SQL Server to access the blob files in the container. Nel frammento di codice seguente sostituire '<your SAS key>' con una voce simile alla seguente: 'sr=c&si=<MYPOLICYNAME>&sig=<THESHAREDACCESSSIGNATURE>'.In the following code snippet, replace '<your SAS key>' with an entry similar to the following: 'sr=c&si=<MYPOLICYNAME>&sig=<THESHAREDACCESSSIGNATURE>'. Per altre informazioni, vedere Gestire l'accesso in lettura anonimo a contenitori e BLOB.For more information, see Manage Access to Azure Storage Resources

CREATE CREDENTIAL [https://testdb.blob.core.windows.net/data]  
WITH IDENTITY='SHARED ACCESS SIGNATURE',  
SECRET = '<your SAS key>'  

CREATE DATABASE testdb   
ON  
( NAME = testdb_dat,  
    FILENAME = 'https://testdb.blob.core.windows.net/data/TestData.mdf' )  
 LOG ON  
( NAME = testdb_log,  
    FILENAME =  'https://testdb.blob.core.windows.net/data/TestLog.ldf')  

Nota importante: se sono presenti riferimenti attivi ai file di dati in un contenitore, i tentativi di eliminare le credenziali di SQL Server corrispondenti non riescono.Important note: If there are any active references to data files in a container, attempts to delete the corresponding SQL Server credential fails.

SecuritySecurity

Di seguito sono riportati requisiti e considerazioni sulla sicurezza a cui attenersi durante l'archiviazione di file di dati di SQL Server in Archiviazione di Azure.The following are security considerations and requirements when storing SQL Server Data Files in Azure Storage.

  • Quando si crea un contenitore per il servizio di archiviazione BLOB di Azure, è consigliabile impostare l'accesso su privato.When creating a container for the Azure Blob storage service, we recommend that you set the access to private. Quando si imposta l'accesso su privato, i dati del contenitore e del BLOB possono essere letti solo dal proprietario dell'account Azure.When you set the access to private, container and blob data can be read by the Azure account owner only.

  • Quando si archiviano i file di database di SQL Server in Archiviazione di Azure, è necessario usare una firma di accesso condiviso, un URI che concede diritti di accesso limitati a contenitori, BLOB, code e tabelle.When storing SQL Server database files in Azure Storage, you need to use a shared access signature, a URI that grants restricted access rights to containers, blobs, queues, and tables. Con la firma di accesso condiviso è possibile abilitare SQL Server all'accesso alle risorse nell'account di archiviazione senza condividere la chiave dell'account di archiviazione di Azure.By using a shared access signature, you can enable SQL Server to access resources in your storage account without sharing your Azure storage account key.

  • Inoltre, è consigliabile continuare a implementare le procedure di sicurezza locali tradizionali dei database.In addition, we recommend that you continue implementing the traditional on-premises security practices for your databases.

Prerequisiti di installazioneInstallation prerequisites

Di seguito sono riportati i prerequisiti di installazione a cui attenersi durante l'archiviazione di file di dati di SQL Server in Azure.The followings are installation prerequisites when storing SQL Server Data Files in Azure.

  • Istanza locale di SQL Server: questa funzionalità è inclusa in SQL Server 2016 e versioni successive.SQL Server on-premises: SQL Server 2016 and later include this feature. Per informazioni su come scaricare la versione più recente di SQL Server, vedere SQL Server.To learn how to download the latest version of SQL Server, see SQL Server.

  • SQL Server in esecuzione in una macchina virtuale di Azure: se si installa SQL Server in una macchina virtuale di Azure, installare SQL Server 2016 oppure aggiornare l'istanza esistente.SQL Server running in an Azure virtual machine: If you are installing SQL Server on an Azure Virtual Machine, install SQL Server 2016, or update your existing instance. Analogamente, è possibile creare una nuova macchina virtuale in Azure usando un'immagine della piattaforma di SQL Server 2016.Similarly, you can also create a new virtual machine in Azure using SQL Server 2016 platform image.

Limitazioni Limitations

  • Nella versione corrente di questa funzionalità, l'archiviazione dei dati FileStream in Archiviazione di Azure non è supportata.In the current release of this feature, storing FileStream data in Azure Storage is not supported. È possibile archiviare i dati Filestream in un database locale integrato in Archiviazione di Azure, ma non è possibile spostare i dati Filestream tra computer usando tale servizio.You can store Filestream data in an Azure storage integrated local database but you cannot move Filestream data between machines using Azure Storage. Per i dati FileStream , è consigliabile continuare a usare le tecniche tradizionali per spostare i file (con estensione mdf e ldf) associati a FileStream tra computer diversi.For FileStream data, we recommend that you continue using the traditional techniques to move the files (.mdf, .ldf) associated with Filestream between different machines.

  • Attualmente, questa nuova funzionalità avanzata non supporta più istanze di SQL Server che accedono contemporaneamente agli stessi file di database in Archiviazione di Azure.Currently, this new enhancement does not support more than one SQL Server instance accessing the same database files in Azure Storage at the same time. Se ServerA è online con un file di database attivo e se ServerB viene avviato per errore e include anch'esso un database che punta allo stesso file di dati, il secondo server non riuscirà ad avviare il database generando il codice errore 5120 Impossibile aprire il file fisico "%.*ls". Errore del sistema operativo %d: "%ls".If ServerA is online with an active database file and if ServerB is accidently started, and it also has a database which points to the same data file, the second server will fail to start the database with an error code 5120 Unable to open the physical file "%.*ls". Operating system error %d: "%ls".

  • Solo i file con estensione mdf, ldf e ndf possono essere archiviati in Archiviazione di Azure con la funzionalità relativa ai file di dati di SQL Server in Azure.Only .mdf, .ldf, and .ndf files can be stored in Azure Storage by using the SQL Server Data Files in Azure feature.

  • Quando si usa la funzionalità relativa ai file di dati di SQL Server in Azure, la replica geografica per l'account di archiviazione non è supportata.When using the SQL Server Data Files in Azure feature, geo-replication for your storage account is not supported. Se un account di archiviazione viene sottoposto alla replica a livello geografico e si verifica un failover a livello geografico, il database può danneggiarsi.If a storage account is geo-replicated and a geo-failover happened, database corruption could occur.

  • Per le limitazioni di capacità, vedere Introduzione all'archiviazione BLOB.For capacity limitations, see Introduction to Blob storage.

  • Non è possibile archiviare i dati di OLTP in memoria in BLOB di Azure usando la funzionalità relativa ai file di dati di SQL Server in Archiviazione di Azure.It is not possible to store In-Memory OLTP data in Azure Blob using the SQL Server Data Files in Azure Storage feature. Ciò è dovuto al fatto che i dati di OLTP in memoria dipendono da FileStream e nella versione corrente di questa funzionalità l'archiviazione dei dati FileStream in Archiviazione di Azure non è supportata.This is because In-Memory OLTP has a dependency on FileStream and, in the current release of this feature, storing FileStream data in Azure Storage is not supported.

  • Quando si usa la funzionalità relativa ai file di dati di SQL Server in Azure, in SQL Server vengono eseguiti tutti i confronti tra URL e percorsi di file usando le regole di confronto impostate nel database master .When using SQL Server Data Files in Azure feature, SQL Server performs all URL or file path comparisons using the Collation set in the master database.

  • I gruppi di disponibilità AlwaysOn sono supportati solo se non si aggiungono nuovi file di database al database primario.Always On availability groups are supported as long as you do not add new database files to the primary database. Se un'operazione del database richiede la creazione di un nuovo file nel database primario, disabilitare prima i gruppi di disponibilità AlwaysOn nel nodo secondario.If a database operation requires a new file to be created in the primary database, first disable Always On availability groups in the secondary node. Eseguire quindi l'operazione sul database primario ed eseguire il backup del database nel nodo primario.Then, perform the database operation on the primary database and backup the database in the primary node. Successivamente, ripristinare il database nel nodo secondario e abilitare i gruppi di disponibilità AlwaysOn nel nodo secondario.Next, restore the database to the secondary node, and enable Always On availability groups in the secondary node. Si noti che le istanze del cluster di failover AlwaysOn non sono supportate quando si usa la funzionalità relativa ai file di dati di SQL Server in Azure.Note that Always On failover cluster instances is not supported when using the SQL Server data files in Azure feature.

  • Durante il normale funzionamento, in SQL Server vengono usati lease temporanei per riservare gli oggetti BLOB per l'archiviazione con un rinnovo del lease di ciascun oggetto BLOB ogni 45-60 secondi.During normal operation, SQL Server uses temporary leases to reserve Blobs for storage with a renewal of each Blob lease every 45 to 60 seconds. Se un server viene arrestato in modo anomalo e viene avviata un'altra istanza di SQL Server configurata per usare gli stessi oggetti BLOB, la nuova istanza dovrà attendere fino a 60 secondi per la scadenza del lease esistente nell'oggetto BLOB.If a server crashes and another instance of SQL Server configured to use the same blobs is started, the new instance will wait up to 60 seconds for the existing lease on the Blob to expire. Se si desidera collegare il database a un'altra istanza e non è possibile attendere i 60 secondi per la scadenza del lease, è possibile interrompere in modo esplicito il lease nell'oggetto BLOB per evitare eventuali errori nelle operazioni di collegamento.If you want to attach the database to another instance and you cannot wait for the lease to expire within 60 seconds, you can explicitly break the lease on the Blob to avoid any failures in attach operations.

Strumenti e supporto di riferimento per la programmazioneTools and programming reference support

Questa sezione descrive gli strumenti e le librerie di riferimento per la programmazione che è possibile usare quando si archiviano file di dati di SQL Server in Archiviazione di Azure.This section describes which tools and programming reference libraries can be used when storing SQL Server data files in Azure Storage.

Supporto PowerShellPowerShell support

Usare i cmdlet di PowerShell per archiviare file di dati di SQL Server nel servizio di archiviazione BLOB di Azure facendo riferimento a un percorso URL di archiviazione BLOB anziché a un percorso di file.Use PowerShell cmdlets to store SQL Server data files in Azure Blob Storage service by referencing a Blob Storage URL path instead of a file path. Accedere agli oggetti BLOB usando il formato di URL seguentehttp://storageaccount.blob.core.windows.net/<container>/<blob> .Access Blobs using the following URL format: http://storageaccount.blob.core.windows.net/<container>/<blob> .

Supporto di oggetti di SQL Server e dei contatori delle prestazioniSQL Server object and performance counters support

A partire da SQL Server 2014 è stato aggiunto un nuovo oggetto di SQL Server da usare con la funzionalità relativa ai file di dati di SQL Server in Archiviazione di Azure.Starting with SQL Server 2014, a new SQL Server object has been added to be used with SQL Server Data Files in Azure Storage feature. Il nuovo oggetto di SQL Server è denominato SQL Server, HTTP_STORAGE_OBJECT e può essere usato da Monitoraggio di sistema per monitorare l'attività quando SQL Server viene eseguito con il servizio di archiviazione di Microsoft Azure.The new SQL Server object is called as SQL Server, HTTP_STORAGE_OBJECT and it can be used by System Monitor to monitor activity when running SQL Server with Windows Azure Storage.

Supporto di SQL Server Management StudioSQL Server Management Studio support

SQL Server Management Studio consente di usare questa funzionalità tramite diverse finestre di dialogo.SQL Server Management Studio allows you to use this feature via several dialog windows. Ad esempio, è possibile digitare il percorso URL del contenitore di archiviazione, > https://teststorageaccnt.blob.core.windows.net/testcontainer/:For example, you can type the URL path of the storage container, such as > https://teststorageaccnt.blob.core.windows.net/testcontainer/ :

come un percorso in diverse finestre di dialogo, ad esempio Nuovo database, Collega databasee Ripristina database.as a Path in several dialog windows, such as New Database, Attach Database, and Restore Database. Per altre informazioni, vedere Esercitazione: Uso del servizio di archiviazione BLOB di Microsoft Azure con i database di SQL Server 2016.For more information, see Tutorial: Using the Microsoft Azure Blob storage service with SQL Server 2016 databases.

Supporto di SQL Server Management Objects (SMO)SQL Server Management Objects (SMO) support

Quando si usa la funzionalità relativa ai file di dati di SQL Server in Azure, sono supportati tutti gli oggetti SMO (SQL Server Management Objects).When using the SQL Server Data Files in Azure feature, all SQL Server Management Objects (SMO) are supported. Se un oggetto SMO richiede un percorso di file, usare il formato URL dell'oggetto BLOB anziché un percorso di file locale, ad esempio https://teststorageaccnt.blob.core.windows.net/testcontainer/.If an SMO object requires a file path, use the BLOB URL format instead of a local file path, such as https://teststorageaccnt.blob.core.windows.net/testcontainer/. Per altre informazioni su SQL Server Management Objects (SMO), vedere Guida alla programmazione di SMO (SQL Server Management Objects) nella documentazione online di SQL Server.For more information about SQL Server Management Objects (SMO), see SQL Server Management Objects (SMO) Programming Guide in SQL Server Books Online.

Supporto di Transact-SQLTransact-SQL support

Questa nuova funzionalità ha introdotto la seguente modifica nella superficie di attacco di Transact-SQL:This new feature has introduced the following change in the Transact-SQL surface area:

  • Una nuova colonna int , credential_id, nella vista di sistema sys.master_files .A new int column, credential_id, in the sys.master_files system view. La colonna credential_id viene usata in modo che i file di dati abilitati per il servizio di archiviazione di Microsoft Azure possano essere riassociati con un riferimento incrociato a sys.credentials per le credenziali create per i file stessi.The credential_id column is used to enable Azure Storage enabled data files to be cross-referenced back to sys.credentials for the credentials created for them. È possibile usarla per la risoluzione dei problemi, ad esempio quando una credenziale non può essere eliminata se usata da un file di database.You can use it for troubleshooting, such as a credential cannot be deleted when there is a database file which uses it.

Risoluzione dei problemi della funzionalità relativa ai file di dati di SQL Server in Microsoft Azure Troubleshooting for SQL Server Data Files in Microsoft Azure

Per evitare errori a causa di limitazioni o funzionalità non supportate, rivedere innanzitutto Limitazioni.To avoid errors due to unsupported features or limitations, first review Limitations.

Di seguito è riportato l'elenco di errori che possono verificarsi durante l'uso della funzionalità relativa ai file di dati di SQL Server in Archiviazione di Azure.The list of errors that you might get when using the SQL Server Data Files in Azure Storage feature are as follows.

Errori di autenticazioneAuthentication errors

  • Impossibile eliminare le credenziali '%.\ls' perché usate da un file di database attivo.* Cannot drop the credential '%.\ls' because it is used by an active database file.*
    Risoluzione: questo errore può essere visualizzato quando si tenta di eliminare le credenziali ancora usate da un file di database attivo in Archiviazione di Azure.Resolution: You may see this error when you try to drop a credential that is still being used by an active database file in Azure Storage. Per eliminare le credenziali, è innanzitutto necessario eliminare l'oggetto BLOB associato a questo file di database.To drop the credential, first you must delete the associated blob that has this database file. Per eliminare un BLOB con un lease attivo è innanzitutto necessario interrompere il lease.To delete a blob that has an active lease, you must first break the lease.

  • La firma di accesso condiviso non è stata creata correttamente nel contenitore. Shared Access Signature has not been created on the container correctly.
    Risoluzione: assicurarsi di avere creato correttamente una firma di accesso condiviso nel contenitore.Resolution: Make sure that you have created a Shared Access Signature on the container correctly. Rivedere le istruzioni della Lezione 2 in Esercitazione: Uso del servizio di archiviazione BLOB di Microsoft Azure con i database di SQL Server 2016 .Review the instructions given in Lesson 2 in Tutorial: Using the Microsoft Azure Blob storage service with SQL Server 2016 databases .

  • Le credenziali di SQL Server non sono state create correttamente. SQL Server credential has not been not created correctly.
    Risoluzione: assicurarsi di avere usato una firma di accesso condiviso per il campo Identity e di aver creato correttamente un segreto.Resolution: Make sure that you have used 'Shared Access Signature' for the Identity field and created a secret correctly. Rivedere le istruzioni della Lezione 3 in Esercitazione: Uso del servizio di archiviazione BLOB di Microsoft Azure con i database di SQL Server 2016.Review the instructions given in Lesson 3 in Tutorial: Using the Microsoft Azure Blob storage service with SQL Server 2016 databases.

    Errori di lease di oggetti BLOB:Lease blob errors:

  • Errore quando si tenta di avviare SQL Server dopo che un'altra istanza che usava gli stessi file BLOB si è arrestata in modo anomalo.Error when trying to start SQL Server after another instance using the same blob files has crashed. Risoluzione: durante il normale funzionamento, in SQL Server vengono utilizzati lease temporanei per riservare gli oggetti BLOB per l'archiviazione con un rinnovo del lease di ciascun oggetto BLOB ogni 45-60 secondi.Resolution: During normal operation, SQL Server uses temporary leases to reserve Blobs for storage with a renewal of each Blob lease every 45 to 60 seconds. Se un server viene arrestato in modo anomalo e viene avviata un'altra istanza di SQL Server configurata per usare gli stessi oggetti BLOB, la nuova istanza dovrà attendere fino a 60 secondi per la scadenza del lease esistente nell'oggetto BLOB.If a server crashes and another instance of SQL Server configured to use the same blobs is started, the new instance will wait up to 60 seconds for the existing lease on the Blob to expire. Se si desidera collegare il database a un'altra istanza e non è possibile attendere i 60 secondi per la scadenza del lease, è possibile interrompere in modo esplicito il lease nell'oggetto BLOB per evitare eventuali errori nelle operazioni di collegamento.If you want to attach the database to another instance and you cannot wait for the lease to expire within 60 seconds, you can explicitly break the lease on the Blob to avoid any failures in attach operations.

    Errori di databaseDatabase errors

  1. Errori durante la creazione di un database Errors when creating a database
    Risoluzione: rivedere le istruzioni della Lezione 4 in Esercitazione: Uso del servizio di archiviazione BLOB di Microsoft Azure con i database di SQL Server 2016.Resolution: Review the instructions given in Lesson 4 in Tutorial: Using the Microsoft Azure Blob storage service with SQL Server 2016 databases.

  2. Errori durante l'esecuzione dell'istruzione Alter Errors when running the Alter statement
    Risoluzione: accertarsi di eseguire l'istruzione Alter Database quando il database è online.Resolution: Make sure to execute the Alter Database statement when the database is online. Quando si copiano i file di dati in Archiviazione di Azure, creare sempre un BLOB di pagine e non un BLOB in blocchi.When copying the data files to Azure Storage, always create a page blob not a block blob. In caso contrario, l'istruzione ALTER Database avrà esito negativo.Otherwise, ALTER Database will fail. Rivedere le istruzioni della Lezione 7 in Esercitazione: Uso del servizio di archiviazione BLOB di Microsoft Azure con i database di SQL Server 2016.Review the instructions given in Lesson 7 in Tutorial: Using the Microsoft Azure Blob storage service with SQL Server 2016 databases.

  3. Codice errore 5120 Impossibile aprire il file fisico "%.\ls". Errore del sistema operativo %d: "%ls"* Error code 5120 Unable to open the physical file "%.\ls". Operating system error %d: "%ls"*
    Risoluzione: attualmente, questa nuova funzionalità avanzata non supporta più istanze di SQL Server che accedono contemporaneamente agli stessi file di database in Archiviazione di Azure.Resolution: Currently, this new enhancement does not support more than one SQL Server instance accessing the same database files in Azure Storage at the same time. Se ServerA è online con un file di database attivo e se ServerB viene avviato per errore e include anch'esso un database che punta allo stesso file di dati, il secondo server non riuscirà ad avviare il database generando il codice errore 5120 Impossibile aprire il file fisico "%.\ls". Errore del sistema operativo %d: "%ls".If ServerA is online with an active database file and if ServerB is accidently started, and it also has a database which points to the same data file, the second server will fail to start the database with an error *code 5120 Unable to open the physical file "%.\ls". Operating system error %d: "%ls"*.

    Per risolvere questo problema, determinare innanzitutto se è necessario che ServerA acceda al file di database in Archiviazione di Azure.To resolve this issue, first determine if you need ServerA to access the database file in Azure Storage or not. Se non è necessario, rimuovere qualsiasi connessione tra ServerA e i file di database in Archiviazione di Azure.If not, simply remove any connection between ServerA and the database files in Azure Storage. A tale scopo, eseguire le operazioni seguenti:To do this, follow these steps:

    1. Impostare il percorso di file di ServerA su una cartella locale tramite l'istruzione ALTER Database.Set the file path of Server A to a local folder by using the ALTER Database statement.

    2. Impostare il database come offline in ServerA.Set the database offline in Server A.

    3. Copiare quindi i file di database da Archiviazione di Azure nella cartella locale in ServerA, in modo da garantire che ServerA contenga una copia del database in locale.Then, copy database files from Azure Storage to the local folder in Server A. This ensures that ServerA still has a copy of the database locally.

    4. Impostare il database come online.Set the database online.

Passaggi successiviNext steps

Creare un databaseCreate a database