前言

在進行資料庫開發與維護時,經常需要知道資料表、檢視表或預存程序最後的修改時間。這些資訊對於:

  • 追蹤系統變更
  • 問題排除
  • 效能調校
  • 版本控制
    都非常重要。本文將介紹幾個實用的SQL查詢技巧,讓你輕鬆掌握資料庫物件的時間資訊。

查詢資料表與檢視表的修改時間

以下是查詢資料表與檢視表修改時間的SQL:

1
2
3
4
5
6
7
8
SELECT [name]           -- 物件名稱
,create_date -- 建立時間
,modify_date -- 修改時間
,type_desc -- 物件類型
FROM sys.all_objects
WHERE type_desc = 'USER_TABLE' -- 使用者資料表
OR type_desc = 'VIEW' -- 檢視表
ORDER BY modify_date DESC -- 依修改時間排序

查詢說明

  • sys.all_objects: SQL Server的系統檢視表,儲存所有資料庫物件的資訊
  • type_desc: 物件類型描述
    • 'USER_TABLE': 使用者建立的資料表
    • 'VIEW': 檢視表
  • ORDER BY modify_date DESC: 依修改時間降冪排序,最新的排在最前面

查詢預存程序的修改時間

如果要查詢預存程序的修改時間,可以使用以下查詢:

1
2
3
4
5
6
SELECT [name]           -- 預存程序名稱
,create_date -- 建立時間
,modify_date -- 修改時間
FROM sys.all_objects
WHERE type_desc = 'SQL_STORED_PROCEDURE' -- 限定查詢預存程序
AND SUBSTRING([name], 1, 3) NOT IN ('sp_', 'dt_', 'xp_') -- 排除系統預存程序

查詢說明

  • type_desc = 'SQL_STORED_PROCEDURE': 只查詢SQL預存程序
  • SUBSTRING([name], 1, 3) NOT IN ('sp_', 'dt_', 'xp_'):
    • 排除系統內建的預存程序
    • 這些預存程序通常以sp_、dt_或xp_開頭
    • 過濾後只顯示使用者建立的預存程序

實際應用範例

這些查詢在以下情況特別有用:

  1. 系統維護

    • 追蹤最近被修改的物件
    • 確認系統更新是否成功部署
  2. 問題排查

    • 當系統發生異常時
    • 可以快速檢查是否有物件被意外修改
  3. 效能調校

    • 追蹤統計資料更新時間
    • 檢查索引重建時間
  4. 版本控制

    • 確認程式碼部署狀態
    • 驗證物件是否為最新版本

注意事項

  1. 執行權限

    • 需要有適當的資料庫權限才能查詢這些系統檢視表
    • 建議使用具有db_owner或更高權限的帳號
  2. 效能考量

    • 這些查詢通常執行很快
    • 但在大型資料庫中,建議加上適當的WHERE條件限制範圍
  3. 時間準確性

    • modify_date會在物件定義變更時更新
    • 純資料異動不會影響此時間

結語

掌握這些查詢技巧,可以讓你的資料庫管理工作事半功倍。建議將這些查詢儲存為程式碼片段,需要時可以快速使用。