2012-02-07 47 views
10

tôi biết rằng tôi có thể nhận được quyền truy cập vào các thuộc tính cột qua:Tôi tìm siêu dữ liệu Sql Server cho các kiểu dữ liệu cột ở đâu?

select * 
from sysobjects 

Những gì tôi không thể tìm thấy tuy nhiên thông tin về nơi để có được các loại và loại dài cho một cột, ví dụ: trong

FOO VARCHAR(80) 

Tôi tìm ở đâu để tìm phần "VARCHAR (80)" của khai báo kiểu trong bảng siêu dữ liệu?

Tôi đã thử xem bảng systypes, nhưng giá trị của nó cho xtype không khớp với giá trị của xtype trong bảng sysobjects.

* Tôi không có quyền truy cập vào SQL gốc được sử dụng để xây dựng các bảng này cũng như không có bất kỳ quyền quản trị nào.

Nếu bạn đã quen thuộc với DB2 Tôi đang tìm tương đương với

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

Trả lời

14

Bạn đang gần. Bạn có thể xem sys.columns để nhận các cột.

Bạn có thể lọc trên bàn với OBJECT_ID=OBJECT_ID('dbo.Foo').

Bạn có thể nhận độ dài từ sys.columns. Kiểu dữ liệu nằm trong trường system_type. Các phím cho trường đó nằm trong số sys.types.

Trong đó là toàn bộ bạn có thể làm:

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 

Là một mặt lưu ý, trong SQL Server hệ thống bảng được phản (ví dụ syscolumns, sysobjects) và nó khuyến cáo như là một thực hành tốt nhất để sử dụng các quan điểm thay vào đó, sys.columns, sys.objects, v.v.

Điều này sẽ cung cấp cho bạn Bảng, cột, loại dữ liệu và độ dài tối đa cho mỗi loại.

+7

Các tham gia nên sử dụng t.user_type_id thay vì c.user_type_id. Nếu cột là trường do người dùng xác định, bạn sẽ nhận được nhiều kết quả cho mỗi cột. tham gia sys.types t trên t.user_type_id = c.system_type_id –

4

Các cách chính xác để làm điều này là để tham gia vào dùng _type_id trong bảng 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 giống hệt system_type_id với nhiều loại hệ thống - xem tài liệu: https://msdn.microsoft.com/en-gb/library/ms188021.aspx

Các vấn đề liên quan