Qual é o objective da tabela de sistema master..spt_values ​​e quais são os significados de seus valores?

Qual é o objective da tabela do sistema master..spt_values?
Por que foi fornecido e como se deve usá-lo?

Quais são os significados do seu tipo, valores baixos e altos?

Atualizar:
A pesquisa do Google dá milhares de “seus usos”, por exemplo:

  • dividir coluna usando master..spt_values
  • contém números de 0 a 2047. É muito útil, por exemplo, se você precisar preencher uma tabela com 100 números dessa faixa
  • para construir índices
  • criando calendars virtuais
  • obter descrições de objects usados ​​de uma maneira pouco intuitiva e complicada
    Enumerar todos os índices em um database do SQL Server (Giuseppe Dimauro, devx.com)
  • “Script do SQL Server 2005 para exibir o uso de espaço em disco”
  • “Não vale a pena falar sobre. Esta tabela é um pesadelo de design de uma tabela de pesquisa” super “”

    Algumas postagens alertam contra seu uso, já que ele pode ser removido em futuras versões do SQL Server, mas já existem scripts de código que o utilizam para ilustrar os novos resources do novo SQL Server 11 (Denali):

  • Usando OFFSET N ROWS FETCH NEXT N LINHAS SOMENTE no SQL Server Denali para facilitar o paging

A tabela spt_values não é mencionada na documentação do SQL Server, mas volta aos dias do Sybase e há uma documentação extremamente mínima nos documentos on-line do Sybase que pode ser resumida neste comentário:

Para ver como é usado, execute sp_helptext e observe o texto de um dos procedimentos do sistema que fazem referência a ele.

Em outras palavras, leia o código e descubra por si mesmo.

Se você examinar os stored procedures do sistema e examinar os próprios dados da tabela, ficará claro que a tabela é usada para converter códigos em cadeias legíveis (entre outras coisas). Ou como a documentação do Sybase vinculada acima, “converter valores internos do sistema […] em formato legível por humanos”

A tabela também é usada às vezes em trechos de código nos blogs do MSDN – mas nunca na documentação formal – geralmente como uma fonte conveniente de uma lista de números. Mas, como discutido em outro lugar , criar sua própria fonte de números é uma solução mais segura e confiável do que usar uma tabela de sistema não documentada. Há até mesmo uma solicitação do Connect para fornecer uma tabela numérica documentada ‘apropriada’ no próprio SQL Server.

De qualquer forma, a tabela é totalmente não documentada, portanto não há nenhum valor significativo em saber algo sobre ela, pelo menos do ponto de vista prático: o próximo service pack ou upgrade pode mudá-la completamente. Curiosidade intelectual é outra coisa, claro 🙂

Principalmente respondeu em outra pergunta .

Quais são os significados do seu tipo, valores baixos e altos?

A maioria dos tipos (ou seja, cada tabela de pesquisa específica, se eles fossem separados) exige um nome ou um número. Alguns tipos exigem colunas baixa e alta também. No Sybase, nós temos uma coluna ErrorNumber, então o sproc pode RAISERROR que não é hard-coded (pode ser mudanças com versões, etc).

Não é “enigmático” a menos que uma lista enumerada seja “enigmática” para você; é apenas uma tabela de pesquisa (todas elas, diferenciadas pela coluna Tipo).