首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

利用 SQL Mail 產生非 dbo 擁有物件的每日報表

     編輯:關於SqlServer

問題背景

開發人員常誤建立非 dbo 擁有的物件 (表、視圖、程序),導致:

  • 同名物件不同擁有者,查詢結果不穩定。
  • 除錯耗時,難以追蹤責任人。

解決方案:SQL Mail 每日報表

  1. 建立網域群組包含所有開發人員與 DBA。
  2. 在每台 SQL Server 為群組成員建立 NT 認證登入,並對應各資料庫使用者。
  3. 將資料庫使用者對應至各自電子郵件地址。
  4. 排程作業每日執行腳本,掃描 sysobjects 找出 uid <> 1 (非 dbo) 的物件。
  5. 彙總後用 xp_sendmail 寄送給對應開發人員與 DBA。

核心查詢腳本

SELECT
    u.name AS Owner,
    o.name AS ObjectName,
    o.type AS Type,
    o.crdate AS CreateDate
FROM sysobjects o
JOIN sysusers u ON o.uid = u.uid
WHERE o.uid <> 1  -- 1 = dbo
  AND o.type IN ('U','V','P','FN','TR')  -- 表、視圖、程序、函數、觸發器
ORDER BY u.name, o.type, o.name;

報表效用

  • 開發人員每日收到自己名下的非 dbo 物件清單,立即修正擁有權 (sp_changeobjectowner)。
  • DBA 收到全庫彙總,追蹤整改進度。
  • 預防「同名不同擁有者」導致的行為差異與除錯浪費。

遷移建議

SQL Server 2005+ 請改用 Database Mail (sp_send_dbmail) + sys.objects / sys.schemas 目錄檢視,語法更標準、效能更好、不依賴 MAPI/Outlook。

制度化「非 dbo 物件每日報表」,能從源頭杜亂物件擁有權混亂,提升團隊開發規範與資料庫治理水平。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved