Panoramica delle query elastiche del database SQL di Azure (anteprima)Azure SQL Database elastic query overview (preview)

La funzionalità delle query elastiche, in anteprima, consente di eseguire una query Transact-SQL che si estende su più database nel database SQL di Azure.The elastic query feature (in preview) enables you to run a Transact-SQL query that spans multiple databases in Azure SQL Database. Consente di eseguire query tra database per accedere a tabelle remote e di connettere strumenti Microsoft e di terze parti (Excel, PowerBI, Tableau e così via) a query tra livelli di dati con più database.It allows you to perform cross-database queries to access remote tables, and to connect Microsoft and third party tools (Excel, PowerBI, Tableau, etc.) to query across data tiers with multiple databases. Utilizzando questa funzionalità, è possibile scalare query ai livelli di dati di grandi dimensioni nel Database SQL e visualizzare i risultati nei report di business intelligence (BI).Using this feature, you can scale out queries to large data tiers in SQL Database and visualize the results in business intelligence (BI) reports.

Vantaggi dell'uso di query elasticheWhy use elastic queries?

Database SQL di AzureAzure SQL Database

Eseguire query su database SQL di Azure completamente in T-SQL.Query across Azure SQL databases completely in T-SQL. Ciò consente l'esecuzione di query di sola lettura sui database remotiThis allows for read-only querying of remote databases. e permette ai clienti locali di SQL Server di eseguire la migrazione delle applicazioni usando nomi in tre e quattro parti o un server collegato nel database SQL.This provides an option for current on-premises SQL Server customers to migrate applications using three- and four-part names or linked server to SQL DB.

Disponibile nel livello StandardAvailable on standard tier

La query elastica è supportata nel livello di prestazioni Standard, oltre che nel livello di prestazioni Premium.Elastic query is supported on the Standard performance tier in addition to the Premium performance tier. Per informazioni sulle limitazioni delle prestazioni per i livelli di prestazioni inferiori, vedere la sezione relativa alle limitazioni della versione di anteprima.See the section on Preview Limitations below on performance limitations for lower performance tiers.

Push nei database remotiPush to remote databases

Le query elastiche possono ora eseguire il push dei parametri SQL nei database remoti per l'esecuzione.Elastic queries can now push SQL parameters to the remote databases for execution.

Esecuzione di stored procedureStored procedure execution

Eseguire chiamate di stored procedure remote o funzioni remote mediante sp_execute _remote.Execute remote stored procedure calls or remote functions using sp_execute _remote.

FlessibilitàFlexibility

Le tabelle esterne con una query elastica possono ora fare riferimento a tabelle remote con nome di schema o tabella diverso.External tables with elastic query can now refer to remote tables with a different schema or table name.

Scenari di query elasticheElastic query scenarios

L'obiettivo consiste nel semplificare gli scenari di query in cui più database forniscono righe in un singolo risultato complessivo.The goal is to facilitate querying scenarios where multiple databases contribute rows into a single overall result. La query può essere composta direttamente dall'utente o dall'applicazione oppure indirettamente tramite gli strumenti connessi al database.The query can either be composed by the user or application directly, or indirectly through tools that are connected to the database. Ciò è particolarmente utile quando si creano report, si usano strumenti commerciali di Business Intelligence o di integrazione dei dati o si usa qualsiasi applicazione che non può essere modificata.This is especially useful when creating reports, using commercial BI or data integration tools—or any application that cannot be changed. La query elastica consente di eseguire query in diversi database usando l'esperienza di connettività nota di SQL Server in strumenti quali Excel, PowerBI, Tableau o Cognos.With an elastic query, you can query across several databases using the familiar SQL Server connectivity experience in tools such as Excel, PowerBI, Tableau, or Cognos. Una query elastica semplifica l'accesso a un'intera raccolta di database tramite query emesse da SQL Server Management Studio o Visual Studio e semplifica le query tra database da Entity Framework o altri ambienti ORM.An elastic query allows easy access to an entire collection of databases through queries issued by SQL Server Management Studio or Visual Studio, and facilitates cross-database querying from Entity Framework or other ORM environments. La Figura 1 visualizza uno scenario in cui un'applicazione cloud esistente che usa la libreria client dei database elasticisi basa su un livello di dati con scalabilità orizzontale e viene usata una query elastica per la creazione di report tra database.Figure 1 shows a scenario where an existing cloud application (which uses the elastic database client library) builds on a scaled-out data tier, and an elastic query is used for cross-database reporting.

Figura 1 Query elastica usata su un livello di dati con scalabilità orizzontaleFigure 1 Elastic query used on scaled-out data tier

Query elastica usata su un livello di dati con scalabilità orizzontale

Gli scenari relativi ai clienti per la query elastica sono caratterizzati dalle topologie seguenti:Customer scenarios for elastic query are characterized by the following topologies:

  • Partizionamento verticale - Query tra database (Topologia 1): i dati vengono partizionati verticalmente tra alcuni database in un livello di dati.Vertical partitioning - Cross-database queries (Topology 1): The data is partitioned vertically between a number of databases in a data tier. In genere, diversi set di tabelle si trovano in diversi database.Typically, different sets of tables reside on different databases. Lo schema risulta quindi diverso nei diversi database.That means that the schema is different on different databases. Ad esempio, tutte le tabelle per l'inventario si trovano in un database, mentre le tabelle correlate alla contabilità si trovano in un altro database.For instance, all tables for inventory are on one database while all accounting-related tables are on a second database. I casi di utilizzo comuni con questa topologia richiedono l'esecuzione di query o la compilazione di report tra tabelle in diversi database.Common use cases with this topology require one to query across or to compile reports across tables in several databases.
  • Partizionamento orizzontale - Partizionamento orizzontale (Topologia 2): i dati vengono partizionati orizzontalmente per distribuire le righe in un livello dati con scalabilità orizzontale.Horizontal Partitioning - Sharding (Topology 2): Data is partitioned horizontally to distribute rows across a scaled out data tier. Con questo approccio lo schema risulta identico in tutti i database partecipanti.With this approach, the schema is identical on all participating databases. Questo approccio viene definito anche "partizionamento orizzontale".This approach is also called “sharding”. Il partizionamento orizzontale può essere eseguito e gestito mediante (1) le librerie di strumenti dei database elastici o (2) il partizionamento orizzontale automatico.Sharding can be performed and managed using (1) the elastic database tools libraries or (2) self-sharding. Una query elastica viene usata per eseguire query o compilare report in molte partizioni.An elastic query is used to query or compile reports across many shards.

Nota

La query elastica è adatta a scenari di reporting occasionali dove è possibile eseguire la maggior parte dell'elaborazione nel livello dati.Elastic query works best for occasional reporting scenarios where most of the processing can be performed on the data tier. Per carichi di lavoro di creazione di report elevati o per scenari di data warehousing con query più complesse è possibile usare anche Azure SQL Data Warehouse.For heavy reporting workloads or data warehousing scenarios with more complex queries, also consider using Azure SQL Data Warehouse.

Partizionamento verticale - Query tra databaseVertical partitioning - cross-database queries

Per iniziare a scrivere codice, vedere Introduzione alle query tra database (partizionamento verticale).To begin coding, see Getting started with cross-database query (vertical partitioning).

È possibile usare una query elastica per rendere disponibili i dati situati in un database SQL ad altri database SQL.An elastic query can be used to make data located in a SQL database available to other SQL databases. Ciò consente alle query di un database di fare riferimento alle tabelle in qualsiasi altro database SQL remoto.This allows queries from one database to refer to tables in any other remote SQL database. Il primo passaggio consiste nel definire un'origine dati esterna per ogni database remoto.The first step is to define an external data source for each remote database. L'origine dati esterna viene definita nel database locale da cui si vuole ottenere l'accesso alle tabelle situate nel database remoto.The external data source is defined in the local database from which you want to gain access to tables located on the remote database. Non è necessaria alcuna modifica al database remoto.No changes are necessary on the remote database. Per scenari tipici di partizionamento verticale in cui i diversi database hanno schemi diversi, è possibile usare le query elastiche per implementare casi di utilizzo comuni, ad esempio l'accesso a dati di riferimento e l'esecuzione di query tra database.For typical vertical partitioning scenarios where different databases have different schemas, elastic queries can be used to implement common use cases such as access to reference data and cross-database querying.

Importante

L'utente deve disporre dell'autorizzazione ALTER ANY EXTERNAL DATA SOURCE.You must possess ALTER ANY EXTERNAL DATA SOURCE permission. Questa autorizzazione è inclusa nell'autorizzazione ALTER DATABASE.This permission is included with the ALTER DATABASE permission. Per il riferimento all'origine dati sottostante sono necessarie autorizzazioni ALTER ANY EXTERNAL DATA SOURCE.ALTER ANY EXTERNAL DATA SOURCE permissions are needed to refer to the underlying data source.

Dati di riferimento: la topologia viene usata per la gestione dei dati di riferimento.Reference data: The topology is used for reference data management. Nella figura seguente due tabelle (T1 e T2) con dati di riferimento vengono mantenute in un database dedicato.In the figure below, two tables (T1 and T2) with reference data are kept on a dedicated database. Usando una query elastica è ora possibile accedere alle tabelle T1 e T2 in modalità remota da altri database, come illustrato nella figura.Using an elastic query, you can now access tables T1 and T2 remotely from other databases, as shown in the figure. Usare la topologia 1 se le tabelle di riferimento hanno dimensioni ridotte o se le query nella tabella di riferimento hanno predicati selettivi.Use topology 1 if reference tables are small or remote queries into reference table have selective predicates.

Figura 2 Partizionamento verticale - Uso della query elastica per eseguire query nei dati di riferimentoFigure 2 Vertical partitioning - Using elastic query to query reference data

Partizionamento verticale - Uso della query elastica per eseguire query nei dati di riferimento

Query tra database: le query elastiche consentono casi di utilizzo che richiedono l'esecuzione di query in diversi database SQL.Cross-database querying: Elastic queries enable use cases that require querying across several SQL databases. La Figura 3 mostra quattro database diversi, ovvero CRM, Inventario, Risorse umane e Prodotti.Figure 3 shows four different databases: CRM, Inventory, HR and Products. Le query eseguite in uno dei database devono accedere anche a uno o a tutti gli altri database.Queries performed in one of the databases also need access to one or all the other databases. Usando una query elastica, è possibile configurare il database per questa situazione eseguendo alcune semplici istruzioni DDL in ogni database.Using an elastic query, you can configure your database for this case by running a few simple DDL statements on each of the four databases. Dopo avere eseguito una volta questa configurazione, l'accesso a una tabella remota sarà semplice quando fare riferimento a una tabella locale dalle query T-SQL o dagli strumenti di Business Intelligence.After this one-time configuration, access to a remote table is as simple as referring to a local table from your T-SQL queries or from your BI tools. Questo approccio è consigliato se le query remote non restituiscono risultati di grandi dimensioni.This approach is recommended if the remote queries do not return large results.

Figura 3 Partizionamento verticale - Uso delle query elastiche per eseguire query in diversi databaseFigure 3 Vertical partitioning - Using elastic query to query across various databases

Partizionamento verticale - Uso delle query elastiche per eseguire query in diversi database

I passaggi seguenti configurano le query su database elastici per scenari di partizionamento verticale che richiedono l'accesso a una tabella situata in database SQL remoti con lo stesso schema:The following steps configure elastic database queries for vertical partitioning scenarios that require access to a table located on remote SQL databases with the same schema:

Dopo l'esecuzione delle istruzioni DDL, sarà possibile accedere alla tabella remota "mytable" come se fosse una tabella locale.After running the DDL statements, you can access the remote table “mytable” as though it were a local table. Il database SQL di Azure apre automaticamente una connessione al database remoto, elabora la richiesta nel database remoto e restituisce i risultati.Azure SQL Database automatically opens a connection to the remote database, processes your request on the remote database, and returns the results.

Partizionamento orizzontale - Partizionamento orizzontaleHorizontal partitioning - sharding

L'uso delle query elastiche per eseguire attività di reporting su un livello dati con partizionamento orizzontale richiede una mappa partizioni dei database elastici per rappresentare i database del livello dati.Using elastic query to perform reporting tasks over a sharded, i.e., horizontally partitioned, data tier requires an elastic database shard map to represent the databases of the data tier . In genere in questo scenario viene usata solo una mappa partizioni, e un database dedicato con capacità di query elastiche (nodo head) viene usato come punto di ingresso per le query di creazione di report.Typically, only a single shard map is used in this scenario and a dedicated database with elastic query capabilities (head node) serves as the entry point for reporting queries. L'accesso alla mappa partizioni è necessario solo per questo database dedicato.Only this dedicated database needs access to the shard map. La Figura 4 illustra questa topologia e la relativa configurazione, con il database sottoposto a query elastiche e la mappa partizioni.Figure 4 illustrates this topology and its configuration with the elastic query database and shard map. I database del livello dati possono essere database SQL di Azure di qualsiasi versione o edizione.The databases in the data tier can be of any Azure SQL Database version or edition. Per altre informazioni sulla libreria client dei database elastici e sulla creazione di mappe partizioni, vedere Gestione delle mappe partizioni.For more information about the elastic database client library and creating shard maps, see Shard map management.

Figura 4 Partizionamento orizzontale - Uso delle query elastiche per la creazione di report relativi ai livelli dati con partizionamento orizzontaleFigure 4 Horizontal partitioning - Using elastic query for reporting over sharded data tiers

Partizionamento orizzontale - Uso delle query elastiche per la creazione di report relativi ai livelli dati con partizionamento orizzontale

Nota

Il database per query elastiche (nodo head) può essere un database separato o lo stesso database che ospita la mappa partizioni.Elastic Query Database (head node) can be separate database, or it can be the same database that hosts the shard map. Indipendentemente dalla configurazione scelta, assicurarsi che il livello di servizio e di prestazioni del database sia sufficientemente elevato per gestire il volume previsto di richieste di accesso o di query.Whatever configuration you choose, make sure that service and performance tier of that database is high enough to handle the expected amount of login/query requests.

I passaggi seguenti configurano le query su database elastico per scenari di partizionamento orizzontale che richiedono l'accesso a un set di tabelle situate, in genere, in alcuni database SQL remoti:The following steps configure elastic database queries for horizontal partitioning scenarios that require access to a set of table that are located on (typically) several remote SQL databases:

Dopo avere eseguito questi passaggi, sarà possibile accedere alla tabella con partizionamento orizzontale "mytable" come se fosse una tabella locale.Once you have performed these steps, you can access the horizontally partitioned table “mytable” as though it were a local table. Il database SQL di Azure apre automaticamente più connessioni parallele ai database remoti in cui vengono archiviate fisicamente le tabelle, elabora le richieste nei database remoti e restituisce i risultati.Azure SQL Database automatically opens multiple parallel connections to the remote databases where the tables are physically stored, processes the requests on the remote databases, and returns the results. Per altre informazioni sui passaggi necessari per gli scenari di partizionamento orizzontale, vedere Query elastiche per il partizionamento orizzontale.More information on the steps required for the horizontal partitioning scenario can be found in elastic query for horizontal partitioning.

Per iniziare a scrivere codice, vedere la guida introduttiva alle query elastiche per il partizionamento orizzontale.To begin coding, see Getting started with elastic query for horizontal partitioning (sharding).

Query T-SQLT-SQL querying

Dopo avere definito le origini dati esterne e le tabelle esterne, è possibile usare le normali stringhe di connessione di SQL Server per connettersi ai database in cui sono state definite le tabelle esterne.Once you have defined your external data sources and your external tables, you can use regular SQL Server connection strings to connect to the databases where you defined your external tables. È quindi possibile eseguire le istruzioni T-SQL sulle tabelle esterne in tale connessioni con le limitazioni illustrate di seguito.You can then run T-SQL statements over your external tables on that connection with the limitations outlined below. Per altre informazioni ed esempi di query T-SQL, vedere gli argomenti della documentazione relativi al partizionamento orizzontale e al partizionamento verticale.You can find more information and examples of T-SQL queries in the documentation topics for horizontal partitioning and vertical partitioning.

Connettività per gli strumentiConnectivity for tools

È possibile usare le normali stringhe di connessione di SQL Server per connettere le applicazioni e gli strumenti di Business Intelligence o di integrazione dei dati ai database con tabelle esterne.You can use regular SQL Server connection strings to connect your applications and BI or data integration tools to databases that have external tables. Assicurarsi che SQL Server sia supportato come origine dati per lo strumento.Make sure that SQL Server is supported as a data source for your tool. Dopo la connessione, fare riferimento al database elastico sottoposto a query e alle tabelle esterne in tale database in modo analogo a qualsiasi altro database di SQL Server a cui ci si connette con lo strumento specifico.Once connected, refer to the elastic query database and the external tables in that database just like you would do with any other SQL Server database that you connect to with your tool.

Importante

L'autenticazione tramite Azure Active Directory con query elastiche non è attualmente supportata.Authentication using Azure Active Directory with elastic queries is not currently supported.

CostiCost

Le query elastiche sono incluse nei costi dei database SQL di Azure.Elastic query is included into the cost of Azure SQL Database databases. Si noti che sono supportate le topologie in cui i database remoti si trovano in un data center diverso rispetto all'endpoint delle query elastiche, ma per i dati in uscita da database remoti vengono addebitate le normali tariffe di Azure.Note that topologies where your remote databases are in a different data center than the elastic query endpoint are supported, but data egress from remote databases are charged regular Azure rates.

Limiti di anteprimaPreview limitations

  • L'esecuzione della prima query elastica può richiedere alcuni minuti nel livello di prestazioni Standard.Running your first elastic query can take up to a few minutes on the Standard performance tier. Questo intervallo di tempo è necessario per caricare le funzionalità delle query elastiche. Le prestazioni di caricamento risultano migliori nei livelli di prestazioni più elevati.This time is necessary to load the elastic query functionality; loading performance improves with higher performance tiers.
  • La creazione di script di origini dati esterne o tabelle esterne da SSMS o SSDT non è ancora supportata.Scripting of external data sources or external tables from SSMS or SSDT is not yet supported.
  • L'importazione/esportazione per il database SQL non supporta ancora origini dati esterne e tabelle esterne.Import/Export for SQL DB does not yet support external data sources and external tables. Se è necessario usare l'importazione/esportazione, eliminare questi oggetti prima dell'esportazione e quindi crearli di nuovo dopo l'importazione.If you need to use Import/Export, drop these objects before exporting and then re-create them after importing.
  • La query elastica supporta attualmente solo l'accesso in sola lettura alle tabelle esterne.Elastic query currently only supports read-only access to external tables. È tuttavia possibile usare la funzionalità T-SQL completa nel database in cui viene definita la tabella esterna.You can, however, use full T-SQL functionality on the database where the external table is defined. Ciò può risultare utile, ad esempio, per rendere permanenti i risultati temporanei usando, ad esempio SELECT <elenco_colonne> INTO <tabella_locale>, oppure per definire stored procedure nel database elastico sottoposto a query che fanno riferimento a tabelle esterne.This can be useful to, e.g., persist temporary results using, e.g., SELECT <column_list> INTO <local_table>, or to define stored procedures on the elastic query database which refer to external tables.
  • Ad eccezione di nvarchar(max), i tipi LOB non sono supportati nelle definizioni di tabelle esterne.Except for nvarchar(max), LOB types are not supported in external table definitions. Come soluzione alternativa, è possibile creare una visualizzazione nel database remoto che esegue il cast del tipo LOB in nvarchar(max), definire una tabella esterna sulla visualizzazione invece della tabella di base e quindi eseguirne di nuovo il cast nel tipo LOB originale nelle query.As a workaround, you can create a view on the remote database that casts the LOB type into nvarchar(max), define your external table over the view instead of the base table and then cast it back into the original LOB type in your queries.
  • Le statistiche di colonna sulle tabelle esterne non sono attualmente supportate.Column statistics over external tables are currently not supported. Le statistiche di tabella sono supportate ma devono essere create manualmente.Tables statistics are supported, but need to be created manually.

Commenti e suggerimentiFeedback

Per condividere commenti e suggerimenti sull'esperienza con le query elastiche, usare Livefyre, i forum MSDN o Stackoverflow.Please share feedback on your experience with elastic queries with us on Livefyre below, the MSDN forums, or on Stackoverflow. Siamo interessati a tutti i tipi di commenti e suggerimenti relativi al servizio (difetti, bordi approssimativo, gap di funzionalità).We are interested in all kinds of feedback about the service (defects, rough edges, feature gaps).

Passaggi successiviNext steps