Specifiche di capacità massima per SQL Server

Si applica a: SQL Server (tutte le versioni supportate)

Questo articolo illustra le dimensioni massime e i numeri di vari oggetti definiti in SQL Server 2016 (13,x) e versioni successive. Per visualizzare i limiti dell'edizione, vedere Limiti di capacità di calcolo per edizione di SQL Server.

Per SQL Server 2014 (12,x), vedere Specifiche di capacità massime per SQL Server 2014.

Oggetti del motore di database

Valori massimi di vari oggetti definiti in SQL Server database o a cui si fa riferimento nelle istruzioni Transact-SQL.

Oggetto Motore di database di SQL Server Valori massimi per SQL Server (64 bit) Informazioni aggiuntive
Dimensioni dei batch 65.536 * (dimensioni del pacchetto di rete) Le dimensioni dei pacchetti di rete sono le dimensioni dei pacchetti TDS (Tabular Data Stream) usati per comunicare tra il motore di database relazionale e le applicazioni. La dimensione predefinita del pacchetto è 4 KB e viene controllata dall'opzione di configurazione delle dimensioni del pacchetto di rete.
Lunghezza byte di una stringa contenente istruzioni Transact-SQL (dimensioni batch) 65.536 * (dimensioni del pacchetto di rete) Le dimensioni dei pacchetti di rete sono le dimensioni dei pacchetti TDS (Tabular Data Stream) usati per comunicare tra il motore di database relazionale e le applicazioni. La dimensione predefinita del pacchetto è 4 KB e viene controllata dall'opzione di configurazione delle dimensioni del pacchetto di rete.
Byte per ogni colonna di stringhe brevi 8\.000
Byte per GROUP BY, ORDER BY 8\.060
Byte per ogni chiave di indice 900 byte per un indice cluster. 1.700 byte per un indice non cluster. Per SQL Server 2014 (12.x) e versioni precedenti, tutte le versioni supportano 900 byte per tutti i tipi di indice. Il numero massimo di byte in una chiave di indice cluster non può superare 900. Per una chiave di indice non cluster, il valore massimo è 1.700 byte.

È possibile definire una chiave usando colonne a lunghezza variabile le cui dimensioni massime superano il limite. Tuttavia, le dimensioni combinate dei dati di tali colonne non possono mai superare il limite.

In un indice non cluster è possibile includere colonne non chiave aggiuntive e non vengono conteggiate rispetto al limite di dimensioni della chiave. Le colonne non chiave potrebbero migliorare le prestazioni di alcune query.
Byte per ogni chiave di indice per tabelle ottimizzate per la memoria 2.500 byte per un indice non cluster. Nessun limite per un indice hash purché tutte le chiavi di indice rientrino nella riga. In una tabella ottimizzata per la memoria, un indice non cluster non può avere colonne chiave le cui dimensioni massime dichiarate superano 2.500 byte. Non importa se i dati effettivi nelle colonne chiave sarebbero più brevi rispetto alle dimensioni massime dichiarate.

Per una chiave di indice hash, non è previsto alcun limite rigido per le dimensioni.

Per gli indici nelle tabelle ottimizzate per la memoria, non esiste alcun concetto di colonne incluse, poiché tutti gli indici coprono intrinsecamente tutte le colonne.

Per una tabella ottimizzata per la memoria, anche se le dimensioni delle righe sono pari a 8.060 byte, alcune colonne a lunghezza variabile possono essere archiviate fisicamente al di fuori di tali 8.060 byte. Tuttavia, le dimensioni massime dichiarate di tutte le colonne chiave per tutti gli indici di una tabella, oltre alle eventuali colonne a lunghezza fissa aggiuntiva nella tabella, devono essere contenute negli 8.060 byte.
Byte per ogni chiave esterna 900
Byte per ogni chiave primaria 900
Byte per ogni riga 8\.060 SQL Server supporta l'archiviazione dell'overflow delle righe, che consente il push delle colonne a lunghezza variabile all'esterno della riga. Nel record principale viene archiviata solo una radice di 24 byte per le colonne di lunghezza variabile spostate all'esterno delle righe. Per altre informazioni, vedere Supporto per righe di grandi dimensioni.
Byte per ogni riga nelle tabelle ottimizzate per la memoria 8\.060 Le tabelle ottimizzate per la memoria in SQL Server 2016 (13.x) e versioni successive supportano l'archiviazione fuori riga. Le colonne a lunghezza variabile vengono spostate all'esterno della riga se le dimensioni massime per tutte le colonne della tabella superano 8.060 byte; questa azione è una decisione in fase di compilazione. Per le colonne archiviate all'esterno delle righe viene archiviato un solo riferimento a 8 byte. Per altre informazioni, vedere Dimensioni di tabelle e righe per le tabelle con ottimizzazione per la memoria.
Byte nel testo di origine di una stored procedure Minore delle dimensioni batch o 250 MB
Byte per ogni colonna varchar(max), varbinary(max), xml, text o image 2^31-1
Caratteri per ogni colonna ntext o nvarchar(max) 2^30-1
Indici cluster per tabella 1
Colonne in GROUP BY, ORDER BY Limitato solo dal numero di byte
Colonne o espressioni in un'istruzione GROUP BY WITH CUBE o GROUP BY WITH ROLLUP 10
Colonne per ogni chiave di indice 32 Se la tabella contiene uno o più indici XML, la chiave di clustering della tabella utente viene limitata a 31 colonne perché la colonna XML viene aggiunta alla chiave di clustering dell'indice XML primario. In SQL Server è possibile includere colonne non chiave in un indice non cluster, per evitare la limitazione di un massimo di 32 colonne chiave. Per altre informazioni, vedere Creare indici con colonne incluse.
Colonne per ogni chiave esterna o primaria 32
Colonne per ogni istruzione INSERT 4\.096
Colonne per ogni istruzione SELECT 4\.096
Colonne per ogni tabella 1\.024 Le tabelle con set di colonne di tipo sparse includono fino a 30.000 colonne. Vedere le informazioni sui set di colonne di tipo sparse.
Colonne per ogni istruzione UPDATE 4\.096 Ai set di colonne di tipo sparse vengono applicati limiti diversi.
Colonne per ogni vista 1\.024
Connessioni per ogni client Valore massimo delle connessioni configurate
Dimensioni del database 524.272 terabytes
Database per ogni istanza di SQL Server 32.767
Filegroup per ogni database 32.767
Filegroup per ogni database per dati ottimizzati per la memoria 1
File per ogni database 32.767
Dimensioni di file (dati) 16 terabyte
Dimensioni del file (log) 2 terabyte
File di dati per dati ottimizzati per la memoria per ogni database 4.096 in SQL Server 2014 (12,x). Il limite è meno restrittivo per SQL Server 2016 (13.x) e versioni successive.
File differenziale per ogni file di dati per dati ottimizzati per la memoria 1
Riferimenti alla tabella della chiave esterna per ogni tabella In uscita = 253.
In ingresso = 10.000.
Per informazioni sulle restrizioni, vedere Create Foreign Key Relationships.
Lunghezza di identificatore (in caratteri) 128
Istanze per ogni computer 50 istanze in un server autonomo.

25 istanze del cluster di failover quando si usa un'unità cluster condivisa come archiviazione.

50 istanze del cluster di failover con condivisioni file SMB come opzione di archiviazione.
Indici per ogni tabella ottimizzata per la memoria 999 a partire da SQL Server 2017 (14.x) e nel database Azure SQL.

8 in SQL Server 2016 (13,x) e SQL Server 2014 (12,x).
Blocchi per ogni connessione Numero massimo di blocchi per ogni server
Blocchi per istanza di SQL Server Limitato solo dalla memoria Questo valore si riferisce all'allocazione di blocchi statici. I blocchi dinamici sono limitati solo dalla memoria.
Livelli di nidificazione delle stored procedure 32 Se una stored procedure accede a più di 64 database o più di due database nell'interleaving, verrà visualizzato un errore.
Sottoquery nidificate 32
Transazioni nidificate 4\.294.967.296
Livelli di nidificazione dei trigger 32
Indici non cluster per tabella 999
Numero di espressioni distinte nella clausola GROUP BY quando è presente una delle seguenti opzioni: CUBE, ROLLUP, GROUPING SETS, WITH CUBE, WITH ROLLUP 32
Numero di set di raggruppamento generati dagli operatori nella clausola GROUP BY 4\.096
Parametri per ogni stored procedure 2\.100
Parametri per ogni funzionalità definita dall'utente 2\.100
REFERENCES per ogni tabella 253
Righe per ogni tabella Limitato dall'archiviazione disponibile
Tabelle per ogni database Limitato dal numero totale di oggetti di un database Gli oggetti includono tabelle, viste, stored procedure, funzioni definite dall'utente, trigger, regole, impostazioni predefinite e vincoli. La somma del numero di tutti gli oggetti in un database non può superare 2.147.483.647.
Partizioni per ogni tabella o indice partizionato 15.000
Statistiche relative a colonne non indicizzate 30.000
Tabelle per ogni istruzione SELECT Limitato solo dalle risorse disponibili
Trigger per ogni tabella Limitato dal numero di oggetti di un database Gli oggetti includono tabelle, viste, stored procedure, funzioni definite dall'utente, trigger, regole, impostazioni predefinite e vincoli. La somma del numero di tutti gli oggetti in un database non può superare 2.147.483.647.
Connessioni utente 32.767
Indici XML 249

oggetti utilità SQL Server

Valori massimi di vari oggetti testati nell'utilità SQL Server.

Oggetto di Utilità SQL Server Valori massimi per SQL Server (64 bit) Informazioni aggiuntive
Computer (computer fisici o macchine virtuali) per utilità SQL Server 100
Istanze di SQL Server per computer 5
Numero totale di istanze di SQL Server per utilità SQL Server 200 Il numero massimo può variare in base alla configurazione hardware del server. Per informazioni introduttive, vedere Attività e funzionalità di Utilità SQL Server. SQL Server punto di controllo utilità non è disponibile in ogni edizione di SQL Server. È possibile leggere le funzionalità supportate da ogni edizione di SQL Server 2019, SQL Server 2017 e SQL Server 2016.
Database utente per ogni istanza di SQL Server, incluse le applicazioni a livello di dati 50
Numero totale di database utente per utilità SQL Server 1\.000
Filegroup per ogni database 1
File di dati per filegroup 1
File di log per ogni database 1
Volumi per ogni computer 3

SQL Server oggetti applicazione livello dati

Valori massimi di vari oggetti testati nelle applicazioni a livello di dati di SQL Server.

Oggetto applicazione livello dati di SQL Server Valori massimi per SQL Server (64 bit) Informazioni aggiuntive
Database per ogni applicazione livello dati 1
Oggetti per ogni applicazione livello dati Limitati dal numero di oggetti in un database o dalla memoria disponibile. I tipi di oggetti inclusi nel limite sono utenti, tabelle, viste, stored procedure, funzioni definite dall'utente, tipo di dati definiti dall'utente, ruoli del database, schemi e tipi di tabella definiti dall'utente.

Oggetti di replica

Valori massimi di vari oggetti definiti in replica di SQL Server.

Oggetto di replica di SQL Server Valori massimi per SQL Server
(64 bit)
Informazioni aggiuntive
Articoli (pubblicazione di tipo merge) 2.048
Articoli (pubblicazione snapshot o transazionale) 32.767
Colonne in una tabella (pubblicazione di tipo merge) 246 Se si utilizza il rilevamento a livello di riga per il rilevamento dei conflitti (impostazione predefinita), la tabella di base può includere fino a 1.024 colonne, che devono tuttavia essere filtrate dall'articolo in modo da pubblicare un massimo di 246 colonne. Se viene utilizzato il rilevamento a livello di colonna, nella tabella di base possono essere incluse al massimo 246 colonne.
Colonne in una tabella (SQL Server pubblicazione snapshot o transazionale) 1\.000 La tabella di base può includere il numero massimo di colonne consentite nel database di pubblicazione SQL Server (1.024), ma le colonne devono essere filtrate dall'articolo se superano il valore massimo specificato per il tipo di pubblicazione.
Colonne in una tabella (pubblicazione snapshot o transazionale di Oracle) 995 La tabella di base può includere il numero massimo di colonne consentite nel database di pubblicazione SQL Server (1.024), ma le colonne devono essere filtrate dall'articolo se superano il valore massimo specificato per il tipo di pubblicazione.
Byte per una colonna utilizzata in un filtro di riga (pubblicazione di tipo merge) 1\.024
Byte per una colonna utilizzata in un filtro di riga (pubblicazione snapshot o transazionale) 8\.000

Vedere anche