2012-02-07 15 views
10

wiem, że mogę uzyskać dostęp do właściwości kolumn poprzez:Gdzie znajdę metadane serwera Sql dla typów danych kolumn?

select * 
from sysobjects 

Co nie mogę znaleźć jednak jest informacja o tym, gdzie uzyskać typ i długość typu dla kolumny, a mianowicie: w

FOO VARCHAR(80) 

Gdzie szukam części "VARCHAR (80)" deklaracji typu w tabelach metadanych?

Próbowałem patrzeć na tabelę systypes, ale jej wartości dla xtype nie pasują do wartości xtype w tabeli sysobjects.

* Nie mam dostępu do oryginalnego kodu SQL używanego do budowania tych tabel ani nie mam żadnych uprawnień administratora.

Jeśli jesteś zaznajomiony z DB2 szukam odpowiednika do

select name, 
     coltype, 
     length, 
    from sysibm.syscolumns 
where tbname = 'FOO' 

Odpowiedz

14

Jesteś blisko. Możesz spojrzeć na sys.columns, aby uzyskać kolumny.

Można filtrować na stole przy pomocy OBJECT_ID=OBJECT_ID('dbo.Foo'). Można uzyskać długość od sys.columns. Typ danych znajduje się w polu system_type. Klucze do tego pola znajdują się w sys.types.

W jego całości można zrobić:

select object_NAME(c.object_id), c.name, t.name, c.max_length 
from sys.columns c 
INNER JOIN sys.types t 
    ON t.system_type_id = c.system_type_id 

Na marginesie, w SQL Server system tabele są przestarzałe (tj syscolumns, sysobjects) i jest zalecany jako najlepszych praktyk, aby zamiast wykorzystać poglądy, sys.columns, sys.objects, itp.

Otrzymasz tabelę, kolumnę, typ danych i maksymalną długość dla każdego z nich.

+7

Dołącz powinien używać t.user_type_id zamiast c.user_type_id. Jeśli kolumna jest polem zdefiniowanym przez użytkownika, otrzymasz z powrotem wiele wyników dla każdego. dołącz sys.types t na t.user_type_id = c.system_type_id –

4

Poprawny sposób to zrobić, aby dołączyć do użytkownik _type_id w tabeli sys.types:

select object_NAME(c.object_id), c.name, t.name, c.max_length 
from sys.columns c 
INNER JOIN sys.types t 
    ON t.user_type_id = c.user_type_id 

user_type_id jest identyczna system_type_id dla typów systemowych - patrz dokumentacja: https://msdn.microsoft.com/en-gb/library/ms188021.aspx

Powiązane problemy