2025年12月20日 星期六

T-SQL 查看資料庫檔案容量

-- 查看資料庫檔案容量
SELECT 
    DB_NAME(database_id) AS '資料庫名稱',
	physical_name N'實體檔案',
    name AS 'Log檔名稱'	,
	type_desc N'檔案類型',
	state_desc N'檔案狀態',
    CAST(size * 8.0 / 1024 AS DECIMAL(10,2)) AS 'Log大小(MB)' 
FROM sys.master_files
--WHERE 
--type_desc = 'LOG' -- 只看LOG
--AND database_id > 4  -- 排除系統資料庫
--AND DB_NAME(database_id) NOT IN ('ReportServer', 'ReportServerTempDB')
ORDER BY size DESC;
參考來源
sys.master_files (Transact-SQL)

T-SQL 查指定資料庫Table欄位資訊

--查指定資料庫Table欄位資訊
--先登入選擇資料庫
SELECT  a.Table_schema +'.'+a.Table_name  as 表格名稱 
,b.COLUMN_NAME as 欄位名稱 
 ,b.DATA_TYPE as 資料型別 
,isnull(b.CHARACTER_MAXIMUM_LENGTH,'')  as 長度 
,isnull(b.COLUMN_DEFAULT,'') as 預設值 
,b.IS_NULLABLE as 允許空值 
,( SELECT value 
FROM fn_listextendedproperty (NULL, 'schema', a.Table_schema, 'table', a.TABLE_NAME, 'column', default) 
WHERE name='MS_Description'  
and objtype='COLUMN' 
and objname Collate Chinese_Taiwan_Stroke_CI_AS = b.COLUMN_NAME 
) as 欄位備註 
FROM 
INFORMATION_SCHEMA.TABLES a 
LEFT JOIN INFORMATION_SCHEMA.COLUMNS b  
ON a.TABLE_NAME = b.TABLE_NAME 
WHERE TABLE_TYPE='BASE TABLE'
參考來源
系統資訊架構檢視 (Transact-SQL)

T-SQL 查指定資料庫Table筆數

--查指定資料庫Table筆數
--先登入選擇資料庫
SELECT   a.name as 表格名稱 , MAX(b.rows) as 目前筆數
 FROM  sysobjects a,  sysindexes b 
 WHERE  a.xtype = 'U'  AND  b.id = OBJECT_ID(a.name) 
 GROUP BY  a.name ORDER BY 表格名稱
參考來源
sys.sysobjects (Transact-SQL)
sys.sysindexes (Transact-SQL)

T-SQL 查指定資料庫所有Table

--查指定資料庫所有Table
--先登入選擇資料庫
select *
from sysobjects
where xtype = 'U' or xtype = 'v'
order by xtype
--AF = 聚合函數 (CLR)
--C = CHECK 條件約束
--D = 預設或 DEFAULT 條件約束
--F = FOREIGN KEY 條件約束
--L = 記錄
--FN = 純量函式
--FS = 元件 (CLR) 純量函式
--FT = 元件 (CLR) 資料表值函式
--IF = 內嵌數據表函式
--IT = 內部數據表
--P = 預存程式
--PC = 元件 (CLR) 預存程式
--PK = PRIMARY KEY 條件約束 (類型為 K)
--RF = 複寫篩選預存程式
--S = 系統資料表
--SN = 同義字
--SO = 時序
--SQ = 服務佇列
--TA = 元件 (CLR) DML 觸發程式
--TF = 資料表函式
--TR = SQL DML 觸發程式
--TT = 資料表類型
--U = 用戶數據表
--UQ = UNIQUE 條件約束 (類型為 K)
--V = 檢視
--X = 擴充預存程式
參考來源
sys.sysobjects (Transact-SQL)