Какова цель системной таблицы master..spt_values ​​и каковы значения ее значений? - PullRequest
55 голосов

Какова цель системной таблицы master..spt_values?
Почему она была предоставлена ​​и как ее использовать?

Каковы значения его типа, низкие, высокие значения?

Обновление:
Поиск Google выдает тысячи «его применений», например:

Ответы [ 3 ]

48 голосов
/ 25 ноября 2010

Таблица spt_values не упоминается в документации по SQL Server, но она восходит к временам Sybase, и в онлайн-документах Sybase есть крайне минимальная документация , которую можно обобщить в этой статье.комментарий:

Чтобы увидеть, как он используется, выполните процедуру sp_helptext и посмотрите на текст одной из системных процедур, которая на него ссылается.

Другими словами, прочитайтекод и решить это для себя.

Если вы поэкспериментируете с системными хранимыми процедурами и изучите сами данные таблицы, то совершенно очевидно, что таблица используется для перевода кодов в читаемые строки (среди прочего).Или, как сказано в документации Sybase, указанной выше, «для преобразования внутренних системных значений [...] в понятный человеку формат»

Таблица также иногда используется в фрагментах кода в MSDNблоги - но не в официальной документации - обычно в качестве удобного источника списка номеров.Но, как обсуждалось в другом месте , создание собственного источника чисел является более безопасным и надежным решением, чем использование недокументированной системной таблицы.Существует даже запрос Connect для предоставления «правильной», документированной таблицы номеров в самом SQL Server.

В любом случае, таблица полностью недокументирована, поэтому нет ничего значительного в знании чего-либо оэто, по крайней мере, с практической точки зрения: следующий пакет обновления или обновление может изменить его полностью.Разумеется, интеллектуальное любопытство - это нечто иное: -)

4 голосов
/ 25 ноября 2010

Ответы в основном на другой вопрос .

Каковы значения его типа, низкие, высокие значения?

Большинство типов (т. Е. Каждая конкретная таблица поиска, если они были отдельными) требуют либо Имя, либо Число.Для некоторых типов требуются столбцы Low и High.В Sybase у нас есть столбец ErrorNumber, поэтому sproc может RAISERROR, который не является жестко запрограммированным (может быть изменен в зависимости от версии и т. Д.).

Он не является "загадочным", если перечисляемый список не является "загадочным"тебе;это просто таблица поиска (все они дифференцированы по столбцу Тип).

0 голосов
/ 20 апреля 2019

Одно использование, определенно не основное его использование, состоит в генерации серии чисел:

--Generate a series from 1 to 100
SELECT
    TOP 100
    ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) AS RowNum
FROM master.dbo.spt_values ORDER BY RowNum
...