天天看點

mysql裡有sysobjects表嗎_SQL Server系統表sysobjects介紹與使用

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

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

sysobjects 表

在資料庫内建立的每個對象(限制、預設值、日志、規則、存儲過程等)在表中占一行。隻有在 tempdb 内,每個臨時對象才在該表中占一行。

mysql裡有sysobjects表嗎_SQL Server系統表sysobjects介紹與使用

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 =

--例如:檢視視圖

SELECT * FROM sysobjects WHERE xtype = 'V'

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

mysql裡有sysobjects表嗎_SQL Server系統表sysobjects介紹與使用

--方法一:

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].[表名]

mysql裡有sysobjects表嗎_SQL Server系統表sysobjects介紹與使用

以後繼續補充。

某些朋友的一些疑問:

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尚未成功,後面要靠大家了)……