系統表 (sysobjects、syscolumns、syscomments、sysdatabases、INFORMATION_SCHEMA.COLUMNS) 是掌握資料庫中繼資料的鑰匙。六大常用查詢:
SELECT name FROM sysobjects WHERE xtype = 'U' AND status >= 0
SELECT name FROM syscolumns WHERE id = OBJECT_ID('table_name')
SELECT a.* FROM sysobjects a, syscomments b
WHERE a.id = b.id AND b.text LIKE '%table_name%'
SELECT name AS 'Stored Procedure' FROM sysobjects WHERE xtype = 'P'
SELECT * FROM master..sysdatabases d
WHERE d.sid NOT IN (SELECT sid FROM master..syslogins WHERE name = 'sa')
-- 或
SELECT dbid, name AS DB_NAME FROM master..sysdatabases WHERE sid <> 0x01
SELECT column_name, data_type
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'table_name'
INFORMATION_SCHEMA 檢視為 ANSI 標準,跨版本相容性優於直接查系統表。sys.objects、sys.columns、sys.sql_modules 等新版目錄檢視。OBJECT_ID() 函數避免硬編碼 ID,提升腳本可攜性。熟練這六類系統表查詢,能快速完成中繼資料盤點、相依性分析、結構同步與自動化腳本生成,是 DBA 與開發人員的必備基本功。