Интерпретация типов кодов в sys.objects в SQL Server
В SQL Server таблица sys.objects включает атрибуты "Тип" и "Тип_Desc". Например, для одной из моих БД:
SELECT DISTINCT [Type], Type_Desc
FROM Sys.Objects
ORDER BY [Type]
Возвращает:
C CHECK_CONSTRAINT
D DEFAULT_CONSTRAINT
F FOREIGN_KEY_CONSTRAINT
FN SQL_SCALAR_FUNCTION
FS CLR_SCALAR_FUNCTION
IT INTERNAL_TABLE
P SQL_STORED_PROCEDURE
PK PRIMARY_KEY_CONSTRAINT
S SYSTEM_TABLE
SQ SERVICE_QUEUE
TR SQL_TRIGGER
U USER_TABLE
UQ UNIQUE_CONSTRAINT
V VIEW
Различные БД имеют разные результаты, в зависимости от того, какие типы используются.
Есть ли исчерпывающий список этих типов? Не существует ограничений на sys.objects, который указывает мне на таблицу из них, а sys.types содержит типы данных. Я искал SQL BOL, но не нашел его. Любая помощь будет оценена по достоинству.
EDIT: в некоторых БД используется только подмножество этих типов. Например, если у меня есть база данных без представлений, когда я запрашиваю Sys.Objects, как указано выше, в результатах нет строк "V". Я ищу список всех возможных типов и описаний, используемых SQL Server.
Ответы
Ответ 1
BOL имеет полный список, но вы не можете присоединиться к этому.
AF = Aggregate function (CLR)
C = CHECK constraint
D = DEFAULT (constraint or stand-alone)
F = FOREIGN KEY constraint
FN = SQL scalar function
FS = Assembly (CLR) scalar-function
FT = Assembly (CLR) table-valued function
IF = SQL inline table-valued function
IT = Internal table
P = SQL Stored Procedure
PC = Assembly (CLR) stored-procedure
PG = Plan guide
PK = PRIMARY KEY constraint
R = Rule (old-style, stand-alone)
RF = Replication-filter-procedure
S = System base table
SN = Synonym
SQ = Service queue
TA = Assembly (CLR) DML trigger
TF = SQL table-valued-function
TR = SQL DML trigger
TT = Table type
U = Table (user-defined)
UQ = UNIQUE constraint
V = View
X = Extended stored procedure
Переход к лучшему источнику SQL Server для этой информации: sys.objects(Transact-SQL), он не упоминает ни одну таблицу для присоединения к. Я не могу сказать, что я когда-либо замечал таблицу кодов для присоединения к любой из системных таблиц или представлений.
Думаю, вам придется создать свою собственную таблицу или представление или просто использовать атрибут Type_Desc в sys.objects.
Ответ 2
Я понимаю, что это уже немного устарело, но для тех, кто ищет ответ, это то, что я нашел.
select * from master..spt_values where type = 'O9T'
Ответ 3
Для SQL 2016 это новое:
SP = Security Policy