【转自CDDN】随笔:sysobjects.Xtype
sysobjects.Xtype
SQL?Server數據庫的一切信息都保存在它的系統表格里。?在大多數情況下,對你最有用的兩個列是Sysobjects.name和Sysobjects.xtype。前面一個用來列出待考察對象的名字,而后一個用來定義對象的類型
sysobjects
在數據庫內創建的每個對象(約束、默認值、日志、規則、存儲過程等)在表中占一行。只有在?tempdb?內,每個臨時對象才在該表中占一行。
| name | sysname | 對象名。 |
| Id | int | 對象標識號。 |
| xtype | char(2) | 對象類型。可以是下列對象類型中的一種: C = CHECK 約束 |
| uid | smallint | 所有者對象的用戶 ID。 |
| 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 約束? |
| userstat | smallint | 保留。 |
| sysstat | smallint | 內部狀態信息。 |
| indexdel | smallint | 保留。 |
| refdate | datetime | 留作以后使用。 |
| version | int | 留作以后使用。 |
| deltrig | int | 保留。 |
| instrig | int | 保留。 |
| updtrig | int | 保留。 |
| seltrig | int | 保留。 |
| category | int | 用于發布、約束和標識。 |
| cache | smallint | 保留。 |
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 = 擴展存儲過程
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;
轉載于:https://www.cnblogs.com/wupingzsf/archive/2011/09/10/2173396.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的【转自CDDN】随笔:sysobjects.Xtype的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]gtest使用
- 下一篇: WCF事务编程[中篇]