2009-05-28 9 views
11

Stavo leggendo il Maximum Capacity Specifications for SQL Server e mi sono imbattuto nella designazione di un ampio tavolo. È diverso da una tabella standard in quanto può contenere fino a 30.000 colonne rispetto a una normale (stretta) tabella limitata alle più familiari 1024 colonne. Ho cercato su google per un ampio tavolo, ma non sembra che nulla sia rilevante. Questo nuovo tipo di tabella ha un nome più formale ???Come si crea una tabella estesa in SQL Server 2008? e quali sono i suoi limiti d'uso?

Quindi, perché abbiamo due diversi tipi di tabelle, come si crea questa tabella speciale e quali sono i limiti dell'utilizzo di questa tabella che può apparentemente contenere più dati? sapere?

+0

vuoi dire più di 30.000 colonne invece delle strade? – jvanderh

+0

sì. il mio correttore automatico di spell cambiava automaticamente la parola in qualcosa di sciocco. Mille grazie. – MikeJ

risposta

9

Una tabella larga è una tabella che utilizza gruppi di colonne e colonne sparse. Segue sempre le stesse restrizioni di larghezza per riga (8019 byte), quindi in genere lo utilizzi solo quando le tue colonne sono per lo più tutte null.

Vedi qui per più informazioni ...

+1

Il limite 8K è per le versioni pre Server SQL 2016, consultare [collegamento] https://technet.microsoft.com/en-us/library/ms186981 (v = sql.105) .aspx –

+1

SQL 2016 ha ancora un byte limite di righe per 8060, ma l'overflow delle righe consente di archiviare più dati. Questo non è nuovo nel 2016, ed è stato intorno per un po '. https://msdn.microsoft.com/en-us/library/ms143432.aspx –

4

"Per creare o modificare una tabella in una tabella ampia, aggiungere column set alla definizione della tabella."

Da here

2

Di solito non si vuole fare questo però! Esistono restrizioni sulle dimensioni delle righe e può essere più lento recuperare i dati rispetto a quando si utilizzano tabelle correlate (anche quelle con relazioni uno a uno). Non ho mai visto un'istanza in cui questa fosse un'idea migliore delle tabelle correlate.

2

Un'altra limitazione è che le tabelle di larghezza non funzionano con la replica transazionale o di unione. Vedi le "Tecnologie di SQL Server che supportano Colonne Sparse" sezione qui: http://msdn.microsoft.com/en-us/library/cc280604(v=sql.105).aspx

+0

Questo riferimento dice: "La replica transazionale supporta colonne sparse, ma non supporta i set di colonne", potresti chiarire la tua risposta e vedere anche la mia pertinente Domanda senza risposta http://dba.stackexchange.com/questions/59476/is-it-possible-to-replicate-wide-table-in-ms-sql? – alpav

+0

Per creare una tabella in una tabella ampia, è necessario creare colonne sparse e aggiungere anche un set di colonne. Se non crei un set di colonne, la tua tabella sarà comunque limitata a 1024 colonne. –