Monitoraggio delle prestazioni del database nel database SQL di AzureMonitoring database performance in Azure SQL Database

Il monitoraggio delle prestazioni di un database SQL in Azure inizia con il monitoraggio dell'utilizzo delle risorse rispetto al livello di prestazioni scelto per il database.Monitoring the performance of a SQL database in Azure starts with monitoring the resource utilization relative to the level of database performance you choose. Il monitoraggio consente di determinare se il database ha capacità in eccesso o se presenta problemi perché è stato superato il limite massimo di risorse e quindi decidere se è opportuno modificare il livello di prestazioni e il livello di servizio del database.Monitoring helps you determine whether your database has excess capacity or is having trouble because resources are maxed out, and then decide whether it's time to adjust the performance level and service tier of your database. È possibile monitorare il database con strumenti grafici nel portale di Azure o con le viste a gestione dinamica di SQL.You can monitor your database using graphical tools in the Azure portal or using SQL dynamic management views.

Suggerimento

Usare Intelligent Insights SQL di Azure per il monitoraggio automatico delle prestazioni del database.Use Azure SQL Intelligent Insights for automatic monitoring of your database performance. Dopo aver rilevato un problema di prestazioni, viene generato un log di diagnostica con i dettagli e l'analisi della causa radice del problema.Once a performance issue is detected, a diagnostic log is generated with details and Root Cause Analysis (RCA) of the issue. Quando possibile viene fornita un'indicazione di miglioramento delle prestazioni.Performance improvement recommendation is provided when possible.

Monitorare i database tramite il portale di AzureMonitor databases using the Azure portal

Nel portale di Azureè possibile monitorare l'utilizzo di un database singolo selezionandolo e facendo clic sul grafico Monitoraggio .In the Azure portal, you can monitor a single database’s utilization by selecting your database and clicking the Monitoring chart. Verrà visualizzata una finestra della metrica in cui è possibile apportare modifiche facendo clic su l pulsante Modifica grafico.This brings up a Metric window that you can change by clicking the Edit chart button. Aggiungere le metriche seguentiAdd the following metrics:

  • Percentuale CPUCPU percentage
  • Percentuale di DTUDTU percentage
  • Percentuale di I/O di datiData IO percentage
  • Percentuale di dimensioni del databaseDatabase size percentage

Dopo aver aggiunto queste metriche, è possibile continuare a visualizzarle nel grafico di monitoraggio con altri dettagli sulla finestra della metrica.Once you’ve added these metrics, you can continue to view them in the Monitoring chart with more details on the Metric window. Tutte le quattro metriche mostrano la percentuale media di utilizzo relativa alla DTU del database.All four metrics show the average utilization percentage relative to the DTU of your database. Per informazioni dettagliate sulle DTU, vedere i livelli di servizio .See the service tiers article for details about DTUs.

Monitoraggio del livello di servizio delle prestazioni del database.

È inoltre possibile configurare gli avvisi sulle metriche delle prestazioni.You can also configure alerts on the performance metrics. Scegliere il pulsante Aggiungi avviso nella finestra Metrica.Click the Add alert button in the Metric window. Seguire la procedura guidata per configurare l'avviso.Follow the wizard to configure your alert. È possibile scegliere di ricevere un avviso se la metrica supera una determinata soglia o scende al di sotto di una determinata soglia.You have the option to alert if the metrics exceed a certain threshold or if the metric falls below a certain threshold.

Ad esempio, se si prevede un aumento del carico di lavoro sul database, è possibile scegliere di configurare un avviso di posta elettronica ogni volta che il database raggiunge l'80% per una qualsiasi delle metriche delle prestazioni.For example, if you expect the workload on your database to grow, you can choose to configure an email alert whenever your database reaches 80% on any of the performance metrics. È possibile utilizzarlo come un preavviso per capire quando potrebbe essere necessario passare a livello di prestazioni superiore.You can use this as an early warning to figure out when you might have to switch to the next higher performance level.

Le metriche delle prestazioni consentono inoltre di determinare se è possibile effettuare il downgrade a un livello di prestazioni inferiore.The performance metrics can also help you determine if you are able to downgrade to a lower performance level. Presupporre di utilizzare un database Standard S2 e tutte le metriche delle prestazioni mostrano che il database in media non utilizza più del 10% in un dato momento.Assume you are using a Standard S2 database and all performance metrics show that the database on average does not use more than 10% at any given time. È probabile che il database funzioni bene in Standard S1.It is likely that the database will work well in Standard S1. Tuttavia, prestare attenzione ai picchi o alle fluttuazioni dei carichi di lavoro prima di decidere di passare a un livello di prestazioni inferiore.However, be aware of workloads that spike or fluctuate before making the decision to move to a lower performance level.

Monitorare i database con le viste a gestione dinamicaMonitor databases using DMVs

Le stesse metriche esposte nel portale sono disponibili anche tramite le viste di sistema: sys.resource_stats nel database master logico del server e sys.dm_db_resource_stats nel database utente.The same metrics that are exposed in the portal are also available through system views: sys.resource_stats in the logical master database of your server, and sys.dm_db_resource_stats in the user database. Usare sys.resource_stats se è necessario monitorare meno dati granulari in un periodo di tempo più lungo.Use sys.resource_stats if you need to monitor less granular data across a longer period of time. Usare sys.dm_db_resource_stats se è necessario monitorare più dati granulari in un periodo di tempo più breve.Use sys.dm_db_resource_stats if you need to monitor more granular data within a smaller time frame. Per ulteriori informazioni, vedere la Guida alle prestazioni del database SQL di Azure.For more information, see Azure SQL Database Performance Guidance.

Nota

sys.dm_db_resource_stats restituisce un set di risultati vuoto quando viene usato nei database Web e Business Edition, che sono stati ritirati.sys.dm_db_resource_stats returns an empty result set when used in Web and Business edition databases, which are retired.

Monitorare l'uso delle risorseMonitor resource use

È possibile monitorare l'utilizzo di risorse usando Informazioni dettagliate prestazioni query del Database SQL e Archivio query.You can monitor resource usage using SQL Database Query Performance Insight and Query Store.

È inoltre possibile monitorare l'utilizzo tramite queste due viste:You can also monitor usage using these two views:

sys.dm_db_resource_statssys.dm_db_resource_stats

È possibile usare la vista sys.dm_db_resource_stats in ogni database SQL.You can use the sys.dm_db_resource_stats view in every SQL database. La vista sys.dm_db_resource_stats mostra i dati recenti sull'uso delle risorse rispetto al livello di servizio.The sys.dm_db_resource_stats view shows recent resource use data relative to the service tier. Informazioni relative a percentuali medie della CPU, dati I/O, scritture nei log e memoria vengono registrate ogni 15 secondi e vengono mantenute per un'ora.Average percentages for CPU, data I/O, log writes, and memory are recorded every 15 seconds and are maintained for 1 hour.

Poiché questa vista fornisce una visione più granulare sull'uso delle risorse, usare prima sys.dm_db_resource_stats per eventuali analisi o risoluzioni di problemi allo stato corrente.Because this view provides a more granular look at resource use, use sys.dm_db_resource_stats first for any current-state analysis or troubleshooting. Ad esempio, questa query descrive l'uso medio e massimo delle risorse per il database corrente nell'ultima ora:For example, this query shows the average and maximum resource use for the current database over the past hour:

SELECT  
    AVG(avg_cpu_percent) AS 'Average CPU use in percent',
    MAX(avg_cpu_percent) AS 'Maximum CPU use in percent',
    AVG(avg_data_io_percent) AS 'Average data I/O in percent',
    MAX(avg_data_io_percent) AS 'Maximum data I/O in percent',
    AVG(avg_log_write_percent) AS 'Average log write use in percent',
    MAX(avg_log_write_percent) AS 'Maximum log write use in percent',
    AVG(avg_memory_usage_percent) AS 'Average memory use in percent',
    MAX(avg_memory_usage_percent) AS 'Maximum memory use in percent'
FROM sys.dm_db_resource_stats;  

Per altre query, vedere gli esempi in sys.dm_db_resource_stats.For other queries, see the examples in sys.dm_db_resource_stats.

sys.resource_statssys.resource_stats

La vista sys.resource_stats nel database master fornisce informazioni aggiuntive utili per il monitoraggio dell'uso delle prestazioni del database SQL al relativo livello di servizio e di prestazioni.The sys.resource_stats view in the master database has additional information that can help you monitor the performance of your SQL database at its specific service tier and performance level. I dati vengono raccolti ogni cinque minuti e conservati per circa 35 giorni.The data is collected every 5 minutes and is maintained for approximately 35 days. Questa vista è utile per analisi cronologiche a lungo termine dell'uso delle risorse del database SQL.This view is useful for a longer-term historical analysis of how your SQL database uses resources.

Il grafico seguente illustra l'uso di risorse della CPU per un database Premium con livello di prestazioni P2 per ogni ora nell'arco di una settimana.The following graph shows the CPU resource use for a Premium database with the P2 performance level for each hour in a week. Questo grafico inizia di lunedì, con 5 giorni lavorativi e un fine settimana in cui l'uso di risorse nell'applicazione è molto inferiore.This graph starts on a Monday, shows 5 work days, and then shows a weekend, when much less happens on the application.

Uso delle risorse del database SQL

In base ai dati, per il livello di prestazioni P2 il carico massimo della CPU di questo database attualmente supera di poco il 50% dell'uso della CPU (a mezzogiorno di martedì).From the data, this database currently has a peak CPU load of just over 50 percent CPU use relative to the P2 performance level (midday on Tuesday). Se la CPU è il fattore più importante nel profilo delle risorse dell'applicazione, si può scegliere P2 come livello di prestazioni idoneo a garantire che il carico di lavoro sia sempre adeguato.If CPU is the dominant factor in the application’s resource profile, then you might decide that P2 is the right performance level to guarantee that the workload always fits. Se si prevede che un'applicazione presenti un incremento nel tempo, è consigliabile avere un buffer di risorse aggiuntivo, in modo che l'applicazione non raggiunga mai il limite del livello di prestazioni.If you expect an application to grow over time, it's a good idea to have an extra resource buffer so that the application doesn't ever reach the performance-level limit. Se si aumenta il livello di prestazioni, è possibile evitare gli errori visibili ai clienti che si possono verificare se un database non ha risorse sufficienti per elaborare in modo efficiente le richieste, in particolare in ambienti sensibili alla latenza.If you increase the performance level, you can help avoid customer-visible errors that might occur when a database doesn't have enough power to process requests effectively, especially in latency-sensitive environments. Un esempio è costituito da un database che supporta un'applicazione per la creazione di pagine Web in base ai risultati delle chiamate al database.An example is a database that supports an application that paints webpages based on the results of database calls.

Altri tipi di applicazioni possono interpretare in modo diverso lo stesso grafico.Other application types might interpret the same graph differently. Se ad esempio un'applicazione prova a elaborare i dati del libro paga ogni giorno e usa lo stesso grafico, questo tipo di modello di processo batch potrebbe essere eseguito correttamente con un livello di prestazioni P1.For example, if an application tries to process payroll data each day and has the same chart, this kind of "batch job" model might do fine at a P1 performance level. Il valore di DTU del livello di prestazioni P1 è pari a 100, mentre quello del livello P2 è pari a 200.The P1 performance level has 100 DTUs compared to 200 DTUs at the P2 performance level. Il livello di prestazioni fornito dal livello di servizio P2 è doppio rispetto a quello fornito dal livello P1.The P1 performance level provides half the performance of the P2 performance level. Il 50% dell'uso della CPU nel livello P2 equivale quindi al 100% dell'uso della CPU in P1.So, 50 percent of CPU use in P2 equals 100 percent CPU use in P1. Se l'applicazione non presenta timeout, è possibile che non sia rilevante se il completamento di un processo richiede 2 ore o 2,5 ore, se viene completato in giornata.If the application does not have timeouts, it might not matter if a job takes 2 hours or 2.5 hours to finish, if it gets done today. Per un'applicazione che rientra in questa categoria è probabilmente sufficiente usare il livello di prestazioni P1.An application in this category probably can use a P1 performance level. Si può sfruttare la presenza di periodi di tempo durante il giorno in cui l'uso delle risorse è inferiore, in modo da spalmare un picco massimo in altri momenti nel corso della giornata.You can take advantage of the fact that there are periods of time during the day when resource use is lower, so that any "big peak" might spill over into one of the troughs later in the day. Il livello di prestazioni P1 può essere ottimale per questo tipo di applicazione e può consentire di limitare i costi, purché i processi vengano completati in orario ogni giorno.The P1 performance level might be good for that kind of application (and save money), as long as the jobs can finish on time each day.

Il database SQL di Azure espone le informazioni sulla risorsa usata per ogni database attivo nella vista sys.resource_stats del database master in ogni server.Azure SQL Database exposes consumed resource information for each active database in the sys.resource_stats view of the master database in each server. I dati nella tabella vengono aggregati per intervalli di 5 minuti.The data in the table is aggregated for 5-minute intervals. Con i livelli di servizio Basic, Standard e Premium, è possibile che la visualizzazione dei dati nella tabella richieda più di 5 minuti, quindi i dati risultano più utili per le analisi cronologiche, invece che per le analisi in tempo quasi reale.With the Basic, Standard, and Premium service tiers, the data can take more than 5 minutes to appear in the table, so this data is more useful for historical analysis rather than near-real-time analysis. Eseguire una query nella vista sys.resource_stats per visualizzare la cronologia recente di un database e per verificare se la prenotazione scelta ha offerto le prestazioni desiderate quando necessario.Query the sys.resource_stats view to see the recent history of a database and to validate whether the reservation you chose delivered the performance you want when needed.

Nota

È necessario essere connessi al database master del server logico del database SQL per eseguire la query sys.resource_stats negli esempi seguenti.You must be connected to the master database of your logical SQL database server to query sys.resource_stats in the following examples.

Questo esempio illustra la modalità di esposizione dei dati in questa vista:This example shows you how the data in this view is exposed:

SELECT TOP 10 *
FROM sys.resource_stats
WHERE database_name = 'resource1'
ORDER BY start_time DESC

Vista del catalogo sys.resource_stats

L'esempio successivo mostra i diversi modi in cui è possibile usare la vista del catalogo sys.resource_stats per ottenere informazioni sul modo in cui il database SQL usa le risorse:The next example shows you different ways that you can use the sys.resource_stats catalog view to get information about how your SQL database uses resources:

  1. Per esaminare l'uso delle risorse nella settimana precedente per il database userdb1, è possibile eseguire questa query:To look at the past week’s resource use for the database userdb1, you can run this query:

     SELECT *
     FROM sys.resource_stats
     WHERE database_name = 'userdb1' AND
           start_time > DATEADD(day, -7, GETDATE())
     ORDER BY start_time DESC;
    
  2. Per verificare l'idoneità del carico di lavoro per il livello di prestazioni, è necessario eseguire il drill-down in ogni aspetto delle metriche delle risorse, ovvero CPU, operazioni di lettura e scrittura, numero di thread di lavoro e numero di sessioni.To evaluate how well your workload fits the performance level, you need to drill down into each aspect of the resource metrics: CPU, reads, writes, number of workers, and number of sessions. Ecco la query modificata usandosys.resource_stats per segnalare i valori medi e massimi di queste metriche delle risorse:Here's a revised query using sys.resource_stats to report the average and maximum values of these resource metrics:

     SELECT
         avg(avg_cpu_percent) AS 'Average CPU use in percent',
         max(avg_cpu_percent) AS 'Maximum CPU use in percent',
         avg(avg_data_io_percent) AS 'Average physical data I/O use in percent',
         max(avg_data_io_percent) AS 'Maximum physical data I/O use in percent',
         avg(avg_log_write_percent) AS 'Average log write use in percent',
         max(avg_log_write_percent) AS 'Maximum log write use in percent',
         avg(max_session_percent) AS 'Average % of sessions',
         max(max_session_percent) AS 'Maximum % of sessions',
         avg(max_worker_percent) AS 'Average % of workers',
         max(max_worker_percent) AS 'Maximum % of workers'
     FROM sys.resource_stats
     WHERE database_name = 'userdb1' AND start_time > DATEADD(day, -7, GETDATE());
    
  3. Con queste informazioni sui valori medi e massimi di ogni metrica delle risorse è possibile valutare l'idoneità del livello di prestazioni scelto in rapporto al carico di lavoro.With this information about the average and maximum values of each resource metric, you can assess how well your workload fits into the performance level you chose. I valori medi di sys.resource_stats offrono in genere una buona baseline da usare nelle dimensioni di destinazione.Usually, average values from sys.resource_stats give you a good baseline to use against the target size. Deve trattarsi dello strumento di misurazione principale.It should be your primary measurement stick. È ad esempio possibile che si usi il livello di servizio Standard con il livello di prestazioni S2.For an example, you might be using the Standard service tier with S2 performance level. Le percentuali medie di uso per la CPU e per operazioni di scrittura e lettura I/O sono inferiori al 40%, il numero medio di thread di lavoro è inferiore a 50 e il numero medio di sessioni è inferiore a 200.The average use percentages for CPU and I/O reads and writes are below 40 percent, the average number of workers is below 50, and the average number of sessions is below 200. Il carico di lavoro potrebbe essere idoneo per il livello di prestazioni S1.Your workload might fit into the S1 performance level. È facile verificare se il database rientra nei limiti dei thread di lavoro e delle sessioni.It's easy to see whether your database fits in the worker and session limits. Per verificare se un database può rientrare in un livello di prestazioni inferiore prendendo in considerazione la CPU e le operazioni di lettura e scrittura, è sufficiente dividere il numero di DTU del livello di prestazioni inferiore per il numero di DTU del livello di prestazioni corrente e moltiplicare il risultato per 100:To see whether a database fits into a lower performance level with regards to CPU, reads, and writes, divide the DTU number of the lower performance level by the DTU number of your current performance level, and then multiply the result by 100:

    S1 DTU / S2 DTU * 100 = 20 / 50 * 100 = 40S1 DTU / S2 DTU * 100 = 20 / 50 * 100 = 40

    Il risultato rappresenta la differenza di prestazioni relativa, in percentuale, tra i due livelli di prestazioni.The result is the relative performance difference between the two performance levels in percentage. Se l'uso delle risorse non supera questa quantità, il carico di lavoro potrebbe essere idoneo per il livello di prestazioni inferiore.If your resource use doesn't exceed this amount, your workload might fit into the lower performance level. È tuttavia necessario esaminare anche tutti gli intervalli dei valori di uso delle risorse e determinare, a livello di percentuale, la frequenza con cui il carico di lavoro del database può rientrare nel livello di prestazioni inferiore.However, you need to look at all ranges of resource use values, and determine, by percentage, how often your database workload would fit into the lower performance level. La query seguente genera questa percentuale per ogni dimensione di risorsa, in base alla soglia del 40% calcolata in questo esempio:The following query outputs the fit percentage per resource dimension, based on the threshold of 40 percent that we calculated in this example:

     SELECT
         (COUNT(database_name) - SUM(CASE WHEN avg_cpu_percent >= 40 THEN 1 ELSE 0 END) * 1.0) / COUNT(database_name) AS 'CPU Fit Percent'
         ,(COUNT(database_name) - SUM(CASE WHEN avg_log_write_percent >= 40 THEN 1 ELSE 0 END) * 1.0) / COUNT(database_name) AS 'Log Write Fit Percent'
         ,(COUNT(database_name) - SUM(CASE WHEN avg_data_io_percent >= 40 THEN 1 ELSE 0 END) * 1.0) / COUNT(database_name) AS 'Physical Data IO Fit Percent'
     FROM sys.resource_stats
     WHERE database_name = 'userdb1' AND start_time > DATEADD(day, -7, GETDATE());
    

    In base all'obiettivo del livello di servizio (SLO) del database, è possibile stabilire se il carico di lavoro può rientrare nel livello di prestazioni inferiore.Based on your database service level objective (SLO), you can decide whether your workload fits into the lower performance level. Se l'obiettivo del livello di servizio del carico di lavoro del database è 99,9% e la query precedente restituisce valori superiori al 99,9% per tutte e tre le dimensioni della risorsa, è probabile che il carico di lavoro possa rientrare nel livello di prestazioni inferiore.If your database workload SLO is 99.9 percent and the preceding query returns values greater than 99.9 percent for all three resource dimensions, your workload likely fits into the lower performance level.

    La percentuale calcolata in precedenza consente inoltre di stabilire se è opportuno usare il livello di prestazioni superiore a quello attualmente in uso per soddisfare l'obiettivo del livello di servizio.Looking at the fit percentage also gives you insight into whether you should move to the next higher performance level to meet your SLO. Ad esempio, userdb1 mostra il valore di uso della CPU seguente per la settimana precedente:For example, userdb1 shows the following CPU use for the past week:

    Percentuale CPU mediaAverage CPU percent Percentuale CPU massimaMaximum CPU percent
    24,524.5 100,00100.00

    L'utilizzo medio della CPU corrisponde a circa un quarto del limite del livello di prestazioni, che potrebbe rientrare nel livello di prestazioni del database.The average CPU is about a quarter of the limit of the performance level, which would fit well into the performance level of the database. Il valore massimo corrisponde tuttavia al limite del livello di prestazioni del database.But, the maximum value shows that the database reaches the limit of the performance level. Per decidere se è necessario passare al livello di prestazioni superiore a quello attualmente in uso,Do you need to move to the next higher performance level? Considerare il numero di volte in cui il carico di lavoro raggiunge il 100% e quindi confrontare tale numero con l'obiettivo del livello di servizio del carico di lavoro del database.Look at how many times your workload reaches 100 percent, and then compare it to your database workload SLO.

     SELECT
     (COUNT(database_name) - SUM(CASE WHEN avg_cpu_percent >= 100 THEN 1 ELSE 0 END) * 1.0) / COUNT(database_name) AS 'CPU fit percent'
     ,(COUNT(database_name) - SUM(CASE WHEN avg_log_write_percent >= 100 THEN 1 ELSE 0 END) * 1.0) / COUNT(database_name) AS 'Log write fit percent'
     ,(COUNT(database_name) - SUM(CASE WHEN avg_data_io_percent >= 100 THEN 1 ELSE 0 END) * 1.0) / COUNT(database_name) AS 'Physical data I/O fit percent'
     FROM sys.resource_stats
     WHERE database_name = 'userdb1' AND start_time > DATEADD(day, -7, GETDATE());
    

    Se questa query restituisce un valore inferiore a 99,9% per qualsiasi delle tre dimensioni della risorsa, è consigliabile prendere in esame la possibilità di passare al livello di prestazioni superiore o usare tecniche di ottimizzazione dell'applicazione per ridurre il carico nel database SQL.If this query returns a value less than 99.9 percent for any of the three resource dimensions, consider either moving to the next higher performance level or use application-tuning techniques to reduce the load on the SQL database.

  4. Questo esercizio tiene in considerazione anche l'aumento di carico di lavoro previsto in futuro.This exercise also considers your projected workload increase in the future.

Per i pool elastici, è possibile monitorare i singoli database nel pool con le tecniche descritte in questa sezione.For elastic pools, you can monitor individual databases in the pool with the techniques described in this section. Tuttavia, è anche possibile monitorare il pool nel complesso.But you can also monitor the pool as a whole. Per informazioni, vedere Monitorare e gestire un elastico.For information, see Monitor and manage an elastic pool.

Numero massimo di richieste simultaneeMaximum concurrent requests

Per visualizzare il numero di richieste simultanee, eseguire questa query Transact-SQL sul database SQL:To see the number of concurrent requests, run this Transact-SQL query on your SQL database:

SELECT COUNT(*) AS [Concurrent_Requests]
FROM sys.dm_exec_requests R

Per analizzare il carico di lavoro di un database SQL locale, modificare questa query in modo che applichi il filtro al database specifico da analizzare.To analyze the workload of an on-premises SQL Server database, modify this query to filter on the specific database you want to analyze. Se ad esempio è presente un database locale denominato MyDatabase, questa query Transact-SQL restituirà il numero di richieste simultanee in tale database:For example, if you have an on-premises database named MyDatabase, this Transact-SQL query returns the count of concurrent requests in that database:

SELECT COUNT(*) AS [Concurrent_Requests]
FROM sys.dm_exec_requests R
INNER JOIN sys.databases D ON D.database_id = R.database_id
AND D.name = 'MyDatabase'

Questo è solo uno snapshot in un singolo punto nel tempo.This is just a snapshot at a single point in time. Per una migliore comprensione del carico di lavoro e dei requisiti relativi alle richieste simultanee, sarà necessario raccogliere molti campioni nel tempo.To get a better understanding of your workload and concurrent request requirements, you'll need to collect many samples over time.

Numero massimo di accessi simultaneiMaximum concurrent logins

Per avere un'idea della frequenza degli accessi, è possibile analizzare i modelli dell'utente e dell'applicazione.You can analyze your user and application patterns to get an idea of the frequency of logins. È inoltre possibile eseguire carichi reali in un ambiente di test per assicurarsi di non raggiungere questo o gli altri limiti descritti in questo argomento.You also can run real-world loads in a test environment to make sure that you're not hitting this or other limits we discuss in this article. Non è disponibile alcuna vista di query singola o vista a gestione dinamica per la visualizzazione dei numeri o della cronologia degli accessi simultanei.There isn’t a single query or dynamic management view (DMV) that can show you concurrent login counts or history.

Se più client usano la stessa stringa di connessione, il servizio autentica ogni account di accesso.If multiple clients use the same connection string, the service authenticates each login. Se 10 utenti si connettono contemporaneamente a un database con nome utente e password identici, ci saranno dieci account di accesso simultanei.If 10 users simultaneously connect to a database by using the same username and password, there would be 10 concurrent logins. Questo limite si applica solo alla durata dell'account di accesso e dell'autenticazione.This limit applies only to the duration of the login and authentication. Se gli stessi 10 utenti si connettono in sequenza al database, il numero di account di accesso simultanei non sarà mai superiore a uno.If the same 10 users connect to the database sequentially, the number of concurrent logins would never be greater than 1.

Nota

Questo limite attualmente non si applica ai database in pool elastici.Currently, this limit does not apply to databases in elastic pools.

Numero massimo di sessioniMaximum sessions

Per visualizzare il numero di sessioni attive correnti, eseguire questa query Transact-SQL sul database SQL:To see the number of current active sessions, run this Transact-SQL query on your SQL database:

SELECT COUNT(*) AS [Sessions]
FROM sys.dm_exec_connections

Se si analizza un carico di lavoro di SQL Server locale, modificare la query per concentrarsi su un database specifico.If you're analyzing an on-premises SQL Server workload, modify the query to focus on a specific database. Questa query consente di determinare le possibili esigenze della sessione per tale database se si sta prendendo in considerazione lo spostamento nel database SQL di Azure.This query helps you determine possible session needs for the database if you are considering moving it to Azure SQL Database.

SELECT COUNT(*)  AS [Sessions]
FROM sys.dm_exec_connections C
INNER JOIN sys.dm_exec_sessions S ON (S.session_id = C.session_id)
INNER JOIN sys.databases D ON (D.database_id = S.database_id)
WHERE D.name = 'MyDatabase'

Queste query restituiscono un conteggio temporizzato.Again, these queries return a point-in-time count. Se si raccolgono più campioni nel tempo, si otterrà una comprensione ottimale dell'uso della sessione.If you collect multiple samples over time, you’ll have the best understanding of your session use.

Per l'analisi del database SQL, è possibile anche ottenere dati statistici cronologici sulle sessioni eseguendo query della visualizzazione sys.resource_stats ed esaminando la colonna active_session_count.For SQL Database analysis, you can get historical statistics on sessions by querying the sys.resource_stats view and reviewing the active_session_count column.

Passaggi successiviNext steps