理解SQL Server系統資料表sysobjects

來源:互聯網
上載者:User
作者: Builder.com.cn
2006-12-24 16:19:20

[被屏蔽廣告]



關於SQL Server資料庫的一切資訊都儲存在它的系統資料表格裡。我懷疑你是否花過比較多的時間來檢查系統資料表格,因為你總是忙於使用者表格。但是,你可能需要偶爾做一點不同尋常的事,例如資料庫所有的觸發器。你可以一個一個地檢查表格,但是如果你有500個表格的話,這可能會消耗相當大的人工。

這就讓sysobjects表格有了用武之地。雖然我不建議你更新這個表格,但是你當然有權對其進行審查。

在大多數情況下,對你最有用的兩個列是sysobjects.name和sysobjects.xtype。前面一個用來列出待考察對象的名字,而後一個用來定義對象的類型,其代碼如下:

  • C檢查約束。
  • D預設的約束
  • F外鍵約束
  • L日誌
  • P預存程序
  • PK主鍵約束
  • RF複製過濾預存程序
  • S系統資料表格
  • TR觸發器
  • U用於表格。
  • UQ獨特的約束。
  • V視圖
  • X被擴充的預存程序

在碰到觸發器的情形下,用來識別觸發器類型的其他三個列是:deltrig、instrig和uptrig。

你可以用下面的命令列出感興趣的所有對象:

SELECT * FROM sysobjects WHERE xtype = <type of interest>

在特殊情況下,也就是在父表格擁有觸發器的情況下,你可能想要用下面這樣的代碼尋找資料庫:

SELECT
      Sys2.[name] TableName,
      Sys1.[name] TriggerName,
      CASE
            WHEN Sys1.deltrig > 0 THEN'Delete'
            WHEN Sys1.instrig > 0 THEN'Insert'
            WHEN Sys1.updtrig > 0 THEN'Update'
      END'TriggerType'
FROM
      sysobjects Sys1 JOIN sysobjects Sys2 ON Sys1.parent_obj = Sys2.[id]
WHERE Sys1.xtype='TR'
ORDERBY TableName

在SQL Server 2005裡,首選的技術是使用系統檢視表。這種方式會把你的查詢同微軟選擇對系統資料表格進行的任何改變隔絕開來。

下面是一個簡單的例子,它使用了INFORMATION_SCHEMA_TABLES視圖:

SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE
FROMINFORMATION_SCHEMA.TABLES
ORDERBY TABLE_SCHEMA, TABLE_NAME

對於AdventureWorks資料庫或者任何你自己的資料庫,使用這個查詢可以產生一個表格快速列表。

為了說明這些架構查詢的能力,看下面的語句,它們列出所選資料庫裡所有的函數和預存程序。

SELECT*FROMINFORMATION_SCHEMA.ROUTINES
ORDERBY ROUTINE_TYPE, ROUTINE_NAME

市面上有20種這樣的資訊架構視圖。如果你需要將資料庫歸檔,而且無法承擔商業解決方案,例如Red Gate或者Apex提供的方案的話,那麼通過這些視圖和一點點實驗,你就可以讓SQL Server給自己產生文檔了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.