Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Qual è lo scopo della tabella di sistema master..spt_values ​​e quali sono i significati dei suoi valori?

I spt_values la tabella non è menzionata nella documentazione di SQL Server ma risale ai giorni di Sybase e c'è una documentazione estremamente minima nei documenti online di Sybase che possono essere riassunti in questo commento:

Per vedere come viene utilizzato, eseguire sp_helptext e guardare il testo di una delle procedure di sistema che vi fa riferimento.

In altre parole, leggi il codice e risolvilo da solo.

Se esamini le procedure memorizzate di sistema ed esamini i dati della tabella stessa, è abbastanza chiaro che la tabella viene utilizzata per tradurre i codici in stringhe leggibili (tra le altre cose). O come dice la documentazione Sybase collegata sopra, "per convertire i valori di sistema interni [...] in un formato leggibile dall'uomo"

La tabella viene talvolta utilizzata anche nei frammenti di codice nei blog MSDN, ma mai nella documentazione formale, in genere come comoda fonte di un elenco di numeri. Ma come discusso altrove, creare la propria fonte di numeri è una soluzione più sicura e affidabile rispetto all'utilizzo di una tabella di sistema non documentata. Esiste anche una richiesta Connect per fornire una tabella numerica "corretta" e documentata in SQL Server stesso.

Ad ogni modo, la tabella è del tutto priva di documenti, quindi non ha alcun valore significativo nel sapere qualcosa al riguardo, almeno da un punto di vista pratico:il prossimo servicepack o aggiornamento potrebbe cambiarlo completamente. La curiosità intellettuale è un'altra cosa, ovviamente :-)