Câu trả lời:
Bạn có thể xem các cột trong sys.columns :
Trả về một hàng cho mỗi cột của một đối tượng có các cột, chẳng hạn như khung nhìn hoặc bảng. Sau đây là danh sách các loại đối tượng có cột:
Đối với các cột được tính trong bảng, truy vấn này có thể được sử dụng:
SELECT [Schema] = s.name
, [Table] = t.name
, number = COUNT(*)
FROM sys.columns c
INNER JOIN sys.tables t ON c.object_id = t.object_id
INNER JOIN sys.schemas s ON t.schema_id = s.schema_id
GROUP BY t.name, s.name
sys.objects cũng có thể được sử dụng với WHEREmệnh đề trên (các) loại bắt buộc:
SELECT [Schema] = s.name
, [Table] = o.name
, number = COUNT(*)
, o.type_desc
FROM sys.columns c
INNER JOIN sys.objects o ON c.object_id = o.object_id
INNER JOIN sys.schemas s ON o.schema_id = s.schema_id
WHERE type IN (
'U' --> U = Table (user-defined)
, 'V' --> V = View
, ...)
GROUP BY o.name, s.name, o.type_desc;
Điều này cũng sẽ hoạt động mặc dù nó được ưa thích hơn (đọc Trường hợp chống lại các quan điểm của Information_SCHema từ Aaron Bertrand) để sử dụng truy vấn đầu tiên:
SELECT TABLE_SCHEMA
, TABLE_NAME
, number = COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY TABLE_SCHEMA, TABLE_NAME;