Hướng dẫn cách lấy toàn bộ field trong table của SQL Server

Đợt mình gặp dự án liên quan đến SQL Server được deploy trên AWS muốn lấy lại toàn bộ thông tin table và field để tiện quản lý, vì tài liệu ban đầu đã bị out of date. SQL Server có các table hệ thống chuyên để quản lý table và field của các database work (database do người dùng tạo để quản lý và sử dụng). 


select schema_name(tab.schema_id) as schema_name,
    tab.name as table_name, 
    col.column_id,
    col.name as column_name, 
    t.name as data_type,    
    col.max_length,
    col.precision
from sys.tables as tab
    inner join sys.columns as col
        on tab.object_id = col.object_id
    left join sys.types as t
    on col.user_type_id = t.user_type_id
order by schema_name,
    table_name, 
    column_id;
Ở đây chúng ta có 3 table chính: sys.table, sys.columns và  sys.types. Từ table chứa tất cả ttable join với table columns để xác định mỗi table có bao nhiêu column, tiếp đến là join với table types để xác định kiểu dữ liệu của từng column. 

Chỉ cần các bước đơn giản là chúng ta có một dánh sách các table, column và kiểu dữ liệu của cả một database. Việc làm này khá phù hợp với các dự án migration hoặc phát triển thêm chức năng nhưng không có thông tin tổng thể của database sau bao nhiêu năm phát triển. 


Đăng nhận xét

Mới hơn Cũ hơn