理解SQL Server系統表sysobjects

2021-05-23 09:13:57 字數 1497 閱讀 7344

這就讓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 =

在特殊情況下,也就是在父**擁有觸發器的情況下,你可能想要用下面這樣的**查詢資料庫:

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給自己生成文件了。

sqlserver系統表作用

syscharsets 主資料庫 字符集與排序順序 sysconfigures 主資料庫 配置選項 syscurconfigs 主資料庫 當前配置選項 sysdatabases 主資料庫 伺服器中的資料庫 syslanguages 主資料庫 語言 syslogins 主資料庫 登陸帳號資訊 syso...

SQL Server 系統表簡介

系統目錄是由描述sql server 系統的資料庫 基表 檢視和索引等物件的結構的系統表組成。sql server 經常訪問系統目錄,檢索系統正常執行所需的必要資訊。1.sysobjects表 sql server 的主系統表sysobjects出現在每個資料庫中,它對每個資料庫物件含有一行記錄。2...

SQLServer2008匯出表資料為SQL指令碼

sqlserver2008的匯出指令碼方法 資料庫名 右鍵 任務 生存指令碼 之後彈出sqlserver指令碼生成嚮導 選擇資料庫 把編寫資料可指令碼這一項改為true,預設是false只匯出表結構 選擇需要匯出的物件 選擇需要匯出的表 選擇將指令碼儲存到檔案,點選完成 但是在sqlserver20...