Tôi đang chạy SQL này:Làm thế nào để loại trừ bảng hệ thống khi truy vấn Sys.Tables?
SELECT S.name as Owner, T.name as TableName FROM sys.tables AS T
JOIN sys.schemas AS S ON S.schema_id = T.schema_id
Và kết quả là:
Owner TableName
------------------------
dbo Person
dbo Customer
dbo sysdiagrams
sysdiagrams
là một system table
nhưng cho thấy trong kết quả.
Cập nhật: Cảm ơn tất cả các câu trả lời và ý kiến của bạn, tôi đang sử dụng Nate Bolam & vmvadivel câu trả lời:
SELECT S.name as Owner, T.name as TableName
FROM
sys.tables AS T
INNER JOIN sys.schemas AS S ON S.schema_id = T.schema_id
LEFT JOIN sys.extended_properties AS EP ON EP.major_id = T.[object_id]
WHERE
T.is_ms_shipped = 0 AND
(EP.class_desc IS NULL OR (EP.class_desc <>'OBJECT_OR_COLUMN' AND
EP.[name] <> 'microsoft_database_tools_support'))
'IS_MS_SHIPPED' có thể là tài sản tốt hơn để sử dụng, nếu bạn cũng muốn loại trừ ví dụ: các đối tượng được thêm vào cơ sở dữ liệu để hỗ trợ nhân rộng (trong khi câu trả lời được chọn chỉ hữu ích để loại trừ, cụ thể là các đối tượng được thêm vào sơ đồ hỗ trợ) –
@Damien_The_Unbeliever: Thật không may, bảng 'sysdiagrams' không có' is_ms_shipped = 1' set - Vì vậy, nó sẽ không bị ảnh hưởng khi bạn cố gắng loại trừ tất cả các bảng hệ thống –