sql server的sysobjects表詳解

來源:互聯網
上載者:User

SQL Server資料庫的一切資訊都儲存在它的系統資料表格裡。

在大多數情況下,對你最有用的兩個列是Sysobjects.name和Sysobjects.xtype。

前面一個用來列出待考察對象的名字,而後一個用來定義對象的類型 sysobjects 在資料庫內建立的每個對象(約束、預設值、日誌、規則、預存程序等)在表中佔一行。 

只有在 tempdb 內,每個臨時對象才在該表中佔一行。 

列名 資料類型 描述 
name sysname 對象名。 
Id int 對象標識號。 
xtype char(2)
物件類型。

1、對象名

對象名(name),可以是下列物件類型中的一種: 
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 保留。
僅限內部使用。 

2、物件類型

物件類型(xtype),Type是在6.0就有的,XType在7.0才出現: Type 物件類型。
可以是下列值之一: 
C = CHECK 條件約束 
D = 預設值或 DEFAULT 約束 
F = FOREIGN KEY 約束 
FN = 純量涵式 
IF = 內嵌表函數 
K = PRIMARY KEY 或 UNIQUE 約束 
L = 日誌 
P = 預存程序 
R = 規則 
RF = 複製篩選預存程序 
S = 系統資料表 
TF = 表函數 
TR = 觸發器 
U = 使用者表 
V = 視圖 
X = 擴充預存程序 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 = 擴充預存程序 

3、常見FAQ

1、問:object_id(N'中N'代表什麼意思 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[text]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[text] 
答:N'' 代表 Unicode類型,National縮寫。可以支援不同語種的對象名 

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)函數的使用,
參考:http://www.cnblogs.com/greateast/archive/2007/07/31/837312.html 

3、 問: USE master SELECT * FROM ...sysobjects “...sysobjects”三個句點的首碼是什麼意思?
答: 對資料庫物件名的 Transact-SQL 引用可以是由四部分組成的名稱,格式如下: [ server_name.[[database_name].[owner_name]. | database_name.[owner_name]. | owner_name.] ] object_name    當引用某個特定對象時,不必總是為 SQL Server 指定標識該對象的伺服器、資料庫和所有者。可以省略中間級節點,而使用句點表示這些位置。對象名的有效格式是: server.database.owner.object
server.database..object server..owner.object server...object database.owner.object database..object owner.object 
例: 
1.找出所有使用者表: select id,name,xtype,crdate from sysobjects where xtype='U' order by name; 或者 select id,name,xtype,crdate from sysobjects where objectproperty(id,N'IsUserTable')=1 order by name; 
2.找出所有預存程序 select id,name,xtype,crdate from sysobjects where xtype='P' order by name; 或者 select id,name,xtype,crdate from sysobjects where objectproperty(id,N'IsProcedure')=1 order by name;

相關文章

聯繫我們

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