Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Questo articolo mostra le dimensioni e i numeri massimi dei diversi 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à massima per SQL Server 2014.
Oggetti del motore di database
Valori massimi dei diversi oggetti definiti nei database di SQL Server o a cui si fa riferimento nelle istruzioni Transact-SQL.
| Oggetti Motore di database di SQL Server | Valori massimi per SQL Server (64 bit) | Informazioni aggiuntive |
|---|---|---|
| Dimensione del batch | 65.536 * (dimensioni del pacchetto di rete) | Le dimensioni del pacchetto di rete indicano le dimensioni dei pacchetti TDS (Tabular Data Stream) usati per le comunicazioni tra le applicazioni e il motore di database relazionale. Le dimensioni predefinite del pacchetto sono pari a 4 KB. Le dimensioni dei pacchetti di rete controllano questa opzione di configurazione. |
| Lunghezza in byte di una stringa contenente istruzioni Transact-SQL (dimensioni batch) | 65.536 * (dimensioni del pacchetto di rete) | Le dimensioni del pacchetto di rete indicano le dimensioni dei pacchetti TDS (Tabular Data Stream) usati per le comunicazioni tra le applicazioni e il motore di database relazionale. La dimensione predefinita del pacchetto è 4 KB e viene controllata dall'opzione di configurazione delle dimensioni del pacchetto di rete. |
| Byte per colonna di stringhe brevi | 8.000 | |
Byte per GROUP BY, ORDER BY |
8.060 | |
| Byte per 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ò essere maggiore di 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 clusterizzato, è possibile includere colonne aggiuntive non chiave, che non vengono conteggiate ai fini del limite di dimensione della chiave. Le colonne non chiave potrebbero migliorare le prestazioni di alcune query. |
| Byte per chiave di indice nelle 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ò contenere colonne chiave le cui dimensioni massime dichiarate superano i 2.500 byte. È indifferente se i dati effettivi nelle colonne chiave sono minori delle dimensioni massime dichiarate. Per una chiave di indice hash non esiste alcun limite fisico alle dimensioni. Per gli indici delle tabelle ottimizzate per la memoria, non è disponibile alcun concetto di colonne incluse poiché tutti gli indici coprono implicitamente tutte le colonne. Per una tabella ottimizzata per la memoria, anche se le dimensioni delle righe sono di 8,060 byte, alcune colonne a lunghezza variabile possono essere fisicamente archiviate all'esterno di tali 8,060 byte. Tuttavia, le dimensioni massime dichiarate di tutte le colonne chiave per tutti gli indici in una tabella, oltre a eventuali colonne a lunghezza fissa aggiuntive nella tabella, non devono superare 8,060 byte. |
| Byte per ogni chiave esterna | 900 | |
| Byte per chiave primaria | 900 | |
| Byte per ogni riga | 8.060 | SQL Server supporta l'archiviazione row-overflow, che consente di spostare fuori riga le colonne di lunghezza variabile. 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 delle righe se le dimensioni massime di tutte le colonne nella tabella superano 8,060 byte. Questa azione è una decisione in fase di compilazione. Per le colonne memorizzate fuori riga, nella riga viene memorizzato solo un riferimento di 8 byte. Per altre informazioni, vedere Tabella e dimensioni delle righe nelle tabelle ottimizzate per la memoria. |
| Byte nel testo sorgente di una procedura memorizzata | Il valore inferiore tra la dimensione del batch e 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 clusterizzati 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 oppure 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. È possibile includere colonne non chiave in un indice non cluster per evitare di raggiungere il limite 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 Usare set di colonne. |
Colonne per ogni istruzione UPDATE |
4.096 | Limiti diversi si applicano all'utilizzo di set di colonne. |
| Colonne per visualizzazione | 1.024 | |
| Connessioni per cliente | Valore massimo delle connessioni configurate | |
| Dimensioni del database | 524.272 terabytes | |
| Database per istanza di SQL Server | 32.767 | |
| Filegroup per ogni database | 32.767 | |
| Gruppi di file per 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 rigoroso per SQL Server 2016 (13.x) e versioni successive. | |
| File delta 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 le restrizioni, vedere Creare relazioni di chiave esterna. |
| Lunghezza di identificatore (in caratteri) | 128 | |
| Istanze per ogni computer | 50 istanze su un server autonomo. 25 istanze del cluster di failover quando si usano unità di cluster condivisi come archiviazione. 50 istanze del cluster di failover con condivisioni di file SMB come opzione di archiviazione. |
|
| Indici per ogni tabella ottimizzata per la memoria | 999 a partire da SQL Server 2017 (14.x) e in database SQL di Azure. 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 ogni 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 annidamento delle stored procedure | 32 | Se una procedura archiviata accede a più di 64 database, o a più di due database in modo interlacciato, si verificherà un errore. |
| Sottoquery nidificate | 32 | |
| Transazioni nidificate | 4.294.967.296 | |
| Livelli di nidificazione dei trigger | 32 | |
| Indici non clusterizzati 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 tabella |
253 | |
| Righe per 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, valori predefiniti e vincoli. La somma del numero di tutti gli oggetti in un database non può essere maggiore di 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, valori predefiniti e vincoli. La somma del numero di tutti gli oggetti in un database non può essere maggiore di 2.147.483.647. |
| Connessioni utente | 32.767 | |
| Indici XML | 249 |
Oggetti dell'applicazione di livello dati di SQL Server
Valori massimi di oggetti diversi testati nelle applicazioni livello dati di SQL Server.
| Oggetto dell'applicazione di livello dati (DAC) di SQL Server | Valori massimi per SQL Server (64 bit) | Informazioni aggiuntive |
|---|---|---|
| Database per DAC | 1 | |
| Oggetti per DAC | 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, tipi di dati definiti dall'utente, ruoli di 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 istantanea 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 (predefinito), nella tabella di base possono essere incluse al massimo 1.024 colonne. Tuttavia, la pubblicazione deve filtrare l'articolo in modo che venga pubblicato 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 (pubblicazione SQL Server di tipo istantanea o transazionale) | 1.000 | La tabella di base può includere il numero massimo di colonne consentito nel database di pubblicazione (1.024 per SQL Server), ma le colonne devono essere filtrate dall'articolo se superano il numero 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 consentito nel database di pubblicazione (1.024 per SQL Server), ma le colonne devono essere filtrate dall'articolo se superano il numero 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 di snapshot o transazionale) | 8.000 |