2010-05-25 4 views
13

Auf SQL Server enthält die Tabelle sys.objects die Attribute "Type" und "Type_Desc". Zum Beispiel für einen meines DBs:Interpretieren von Typencodes in sys.objects in SQL Server

SELECT DISTINCT [Type], Type_Desc 
FROM Sys.Objects 
ORDER BY [Type] 

Returns:

 
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 

Verschiedene DBs haben unterschiedliche Ergebnisse, je nachdem, welche Arten verwendet werden.

Gibt es irgendwo eine umfassende Liste dieser Typen? Es gibt keine Einschränkung für sys.objects, die mich auf diese Tabelle verweist, und sys.types enthält Datentypen. Ich habe SQL BOL gesucht, aber nicht gefunden. Jede Hilfe wäre willkommen.

EDIT: Einige DBs verwenden nur eine Teilmenge dieser Typen. Zum Beispiel, wenn ich eine Datenbank ohne Ansichten habe, wenn ich Sys.Objects wie oben abfrage, gibt es keine "V" Zeilen in den Ergebnissen. Ich suche nach einer Liste aller möglichen Typen und Beschreibungen, die von SQL Server verwendet werden.

Antwort

35

BOL hat eine vollständige Liste, aber Sie können nicht beitreten.

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 

Gehen zur besten SQL Server-Quelle für diese Info: sys.objects (Transact-SQL) es erwähnt keine Tabelle zu verbinden. Ich kann nicht sagen, dass ich jemals eine Codetabelle bemerkt habe, zu der ich mich für irgendeine der Systemtabellen oder -ansichten anmelde.

Ich denke, Sie müssen Ihre eigene Tabelle oder Ansicht erstellen oder einfach das Type_Desc-Attribut in sys.objects verwenden.

0

Für SQL 2016 das ist neu:

SP = Security Policy 
1

Ich weiß, das jetzt ist ein bisschen alt, aber für die Suche nach einer Antwort, das ist, was ich gefunden habe.

select * from master..spt_values where type = 'O9T'