SQL Server系統資料表sysobjects介紹與使用

來源:互聯網
上載者:User

標籤:建議   use   判斷   tran   比較   預存程序   sql   cts   物件類型   

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

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

  sysobjects 表 
  在資料庫內建立的每個對象(約束、預設值、日誌、規則、預存程序等)在表中佔一行。只有在 tempdb 內,每個臨時對象才在該表中佔一行。

 

sysobjects 表結構:

列名 資料類型 描述
name sysname 對象名,常用列
id int 對象標識號
xtype char(2) 物件類型。常用列。xtype可以是下列物件類型中的一種: 
C = CHECK 條件約束  D = 預設值或 DEFAULT 約束  F = FOREIGN KEY 約束  L = 日誌  FN = 純量涵式 
IF = 內嵌表函數   P = 預存程序   PK = PRIMARY KEY 約束(類型是 K)   RF = 複製篩選預存程序 
 S = 系統資料表   TF = 表函數   TR = 觸發器   U = 使用者表   UQ = UNIQUE 約束(類型是 K) 
V = 視圖   X = 擴充預存程序
uid smallint 所有者使用者物件編號
info smallint 保留。僅限內部使用
status int 保留。僅限內部使用
base_schema_ ver int 保留。僅限內部使用
 replinfo  int 保留。供複製使用
 parent_obj  int  父物件的對象標識號(例如,對於觸發器或約束,該標識號為表 ID)。
 crdate  datetime  對象的建立日期。
 ftcatid  smallint  為全文索引註冊的所有使用者表的全文檢索目錄標識符,對於沒有註冊的所有使用者表則為 0
 schema_ver  int  版本號碼,該版本號碼在每次表的架構更改時都增加。
 stats_schema_ ver  int  保留。僅限內部使用。
type char(2)   物件類型。可以是下列值之一: 
 C = CHECK 條件約束   D = 預設值或 DEFAULT 約束 F = FOREIGN KEY 約束 
 FN = 純量涵式 IF = 內嵌表函數  K = PRIMARY KEY 或 UNIQUE 約束 
 L = 日誌 P = 預存程序 R = 規則  RF = 複製篩選預存程序 
S = 系統資料表  TF = 表函數 TR = 觸發器 U = 使用者表 V = 視圖 X = 擴充預存程序
 userstat smallint   保留。
 sysstat smallint   內部狀態資訊
 indexdel  smallint  保留
 refdate  datetime  留用
 version int   保留
deltrig  int   保留
 instrig int   保留
 updtrig int   保留
 seltrig int   保留
 category  int  用於發布、約束和標識
 cache smallint   保留

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

SELECT * FROM sysobjects WHERE xtype = <type of interest>--例如:查看視圖SELECT * FROM sysobjects WHERE xtype = ‘V‘

判斷資料庫中是否已經存在某個表,有的話就刪除該表

--方法一:if exists (select * from dbo.sysobjects where id = object_id(N‘[dbo].[表名]‘) and OBJECTPROPERTY(id, N‘IsUserTable‘) = 1)drop table [dbo].[表名]--方法二:if exists (select * from sysobjects where id = object_id(N‘表名‘) and OBJECTPROPERTY(id, N‘IsUserTable‘) = 1)drop table [dbo].[表名]--方法三:if(Exists(Select * From SysObjects Where xtype=‘U‘ And Name=‘表名‘)) drop table [dbo].[表名]

以後繼續補充。

部分朋友的一些疑問:

1、問:object_id(N‘表名‘)中N‘代表什麼意思?

答:N‘‘ 代表 Unicode類型.可以支援不同語種的對象名

2、 問: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]‘):是得出系統給表usertab分配的唯一ID   
OBJECTPROPERTY(id,   N‘IsUserTable‘)   =   1   
該對象的屬性是表類型的 objectproperty(id,property)函數的使用,

3、 問:USE master SELECT * FROM ...SysObjects ” ...sysobjects ” -- 三個句點的首碼是什麼意思?

答:對資料庫物件名的 Transact-SQL 引用可以是由四部分組成的名稱,格式如下:[ server_name.[[database_name].[owner_name]. | database_name.[owner_name]. | owner_name.] ] object_name

未完待續(XX尚未成功,後面要靠大家了)……

SQL Server系統資料表sysobjects介紹與使用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.