轉(zhuǎn)載
關(guān)于SQL Server數(shù)據(jù)庫(kù)的一切信息都保存在它的系統(tǒng)表格里。我懷疑你是否花過(guò)比較多的時(shí)間來(lái)檢查系統(tǒng)表格,因?yàn)槟憧偸敲τ谟脩舯砀?。但是,你可能需要偶爾做一點(diǎn)不同尋常的事,例如數(shù)據(jù)庫(kù)所有的觸發(fā)器。你可以一個(gè)一個(gè)地檢查表格,但是如果你有500個(gè)表格的話,這可能會(huì)消耗相當(dāng)大的人工。
這就讓sysobjects表格有了用武之地。雖然我不建議你更新這個(gè)表格,但是你當(dāng)然有權(quán)對(duì)其進(jìn)行審查。
sysobjects 表
在數(shù)據(jù)庫(kù)內(nèi)創(chuàng)建的每個(gè)對(duì)象(約束、默認(rèn)值、日志、規(guī)則、存儲(chǔ)過(guò)程等)在表中占一行。只有在 tempdb 內(nèi),每個(gè)臨時(shí)對(duì)象才在該表中占一行。
sysobjects 表結(jié)構(gòu):
| 列名 | 數(shù)據(jù)類型 | 描述 |
|---|---|---|
| name | sysname | 對(duì)象名,常用列 |
| id | int | 對(duì)象標(biāo)識(shí)號(hào) |
| xtype | char(2) | 對(duì)象類型。常用列。xtype可以是下列對(duì)象類型中的一種: |
| C = CHECK 約束 D = 默認(rèn)值或 DEFAULT 約束 F = FOREIGN KEY 約束 L = 日志 FN = 標(biāo)量函數(shù) | ||
| IF = 內(nèi)嵌表函數(shù) P = 存儲(chǔ)過(guò)程 PK = PRIMARY KEY 約束(類型是 K) RF = 復(fù)制篩選存儲(chǔ)過(guò)程 | ||
| S = 系統(tǒng)表 TF = 表函數(shù) TR = 觸發(fā)器 U = 用戶表 UQ = UNIQUE 約束(類型是 K) | ||
| V = 視圖 X = 擴(kuò)展存儲(chǔ)過(guò)程 | ||
| uid | smallint | 所有者用戶對(duì)象編號(hào) |
| info | smallint | 保留。僅限內(nèi)部使用 |
| status | int | 保留。僅限內(nèi)部使用 |
| base_schema_ ver | int | 保留。僅限內(nèi)部使用 |
| replinfo | int | 保留。供復(fù)制使用 |
| parent_obj | int | 父對(duì)象的對(duì)象標(biāo)識(shí)號(hào)(例如,對(duì)于觸發(fā)器或約束,該標(biāo)識(shí)號(hào)為表 ID)。 |
| crdate | datetime | 對(duì)象的創(chuàng)建日期。 |
| ftcatid | smallint | 為全文索引注冊(cè)的所有用戶表的全文目錄標(biāo)識(shí)符,對(duì)于沒(méi)有注冊(cè)的所有用戶表則為 0 |
| schema_ver | int | 版本號(hào),該版本號(hào)在每次表的架構(gòu)更改時(shí)都增加。 |
| stats_schema_ ver | int | 保留。僅限內(nèi)部使用。 |
| type | char(2) | 對(duì)象類型??梢允窍铝兄抵唬?/td> |
| C = CHECK 約束 D = 默認(rèn)值或 DEFAULT 約束 F = FOREIGN KEY 約束 | ||
| FN = 標(biāo)量函數(shù) IF = 內(nèi)嵌表函數(shù) K = PRIMARY KEY 或 UNIQUE 約束 | ||
| L = 日志 P = 存儲(chǔ)過(guò)程 R = 規(guī)則 RF = 復(fù)制篩選存儲(chǔ)過(guò)程 | ||
| S = 系統(tǒng)表 TF = 表函數(shù) TR = 觸發(fā)器 U = 用戶表 V = 視圖 X = 擴(kuò)展存儲(chǔ)過(guò)程 | ||
| userstat | smallint | 保留。 |
| sysstat | smallint | 內(nèi)部狀態(tài)信息 |
| indexdel | smallint | 保留 |
| refdate | datetime | 留用 |
| version | int | 保留 |
| deltrig | int | 保留 |
| instrig | int | 保留 |
| updtrig | int | 保留 |
| seltrig | int | 保留 |
| category | int | 用于發(fā)布、約束和標(biāo)識(shí) |
| cache | smallint | 保留 |
以后繼續(xù)補(bǔ)充。
某些朋友的一些疑問(wèn):
1、問(wèn):object_id(N'表名')中N'代表什么意思?
答:N'' 代表 Unicode類型.可以支持不同語(yǔ)種的對(duì)象名
2、 問(wèn):select * from dbo.sysobjects where id = object_id(N'[dbo].[usertab]') and OBJECTPROPERTY(id, N'IsUserTable') = 1
這句中的object_id(N'[dbo].[usertab]')和OBJECTPROPERTY(id, N'IsUserTable') = 1
是什么意思?
答:object_id(N'[dbo].[usertab]'):是得出系統(tǒng)給表usertab分配的唯一ID
OBJECTPROPERTY(id, N'IsUserTable') = 1
該對(duì)象的屬性是表類型的 objectproperty(id,property)函數(shù)的使用,
3、 問(wèn):USE master SELECT * FROM ...SysObjects ” ...sysobjects ” -- 三個(gè)句點(diǎn)的前綴是什么意思?
答:對(duì)數(shù)據(jù)庫(kù)對(duì)象名的 Transact-SQL 引用可以是由四部分組成的名稱,格式如下:[ server_name.[[database_name].[owner_name]. | database_name.[owner_name]. | owner_name.] ] object_name
未完待續(xù)(XX尚未成功,后面要靠大家了)……
收集整理,轉(zhuǎn)載請(qǐng)注明出處!