一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

sys.sysobjects、sys.all

 quasiceo 2017-03-09
分類:

Sql server 2005系統(tǒng)視圖sys.sysobjects和sys.all_objects,sys.objects,三者之間有什么區(qū)別?


一、這三個(gè)視圖都是存在于SQL Server 2005的每個(gè)數(shù)據(jù)庫(kù)中。在SQL Server 2000中,它們都是系統(tǒng)表,而不是視圖。

關(guān)于兩個(gè)版本中系統(tǒng)表和系統(tǒng)的視圖的對(duì)應(yīng)關(guān)系,參考:點(diǎn)擊打開鏈接

1.sys.all_objects:顯示所有架構(gòu)范圍內(nèi)的用戶定義對(duì)象和系統(tǒng)對(duì)象 ,參考點(diǎn)擊打開鏈接

2.sys.sysobjects,sys.objects:用戶在數(shù)據(jù)庫(kù)中創(chuàng)建的每個(gè)對(duì)象(例如約束、默認(rèn)值、日志、規(guī)則以及存儲(chǔ)過程)都對(duì)應(yīng)一行, 參考點(diǎn)擊打開鏈接

3.sys.objects 不顯示 DDL 觸發(fā)器,因?yàn)樗鼈儾皇羌軜?gòu)范圍內(nèi)的對(duì)象。所有觸發(fā)器(包括 DML 和 DDL)均位于sys.triggers 中。sys.triggers 支持對(duì)各種觸發(fā)器應(yīng)用混合名稱范圍規(guī) 則。

在自己的數(shù)據(jù)庫(kù)中測(cè)試發(fā)現(xiàn),sys.objects,sys.sysobjects視圖的內(nèi)容是完全一致的。這三個(gè)視圖的結(jié)構(gòu)比較類似,其中飽含type,id等屬性。其中type的取值代表了各種不同的對(duì)象類型。對(duì)于觸發(fā)器或者約束對(duì)象,parent_obj屬性表示父表的id。

 

二、Name, ID相關(guān)的系統(tǒng)函數(shù):
1.SCHEMA_NAME ( [ schema_id ] ):返回與架構(gòu) ID 關(guān)聯(lián)的架構(gòu)名稱。
2.OBJECT_NAME ( object_id [, database_id ] ):返回架構(gòu)范圍內(nèi)對(duì)象的數(shù)據(jù)庫(kù)對(duì)象名稱。
3.OBJECT_ID (object_name [,'object_type' ] ):返回架構(gòu)范圍內(nèi)對(duì)象的數(shù)據(jù)庫(kù)對(duì)象標(biāo)識(shí)號(hào),包括觸發(fā)器等; 若要返回 DDL 觸發(fā)器的對(duì)象標(biāo)識(shí)號(hào),請(qǐng)使用 SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'。

 

三、列名 數(shù)據(jù)類型說明
name
sysname
對(duì)象名稱。

object_id
int
對(duì)象標(biāo)識(shí)號(hào)。在數(shù)據(jù)庫(kù)中是唯一的。

principal_id
int
如果不是架構(gòu)所有者,則為單個(gè)所有者的 ID。默認(rèn)情況下,架構(gòu)包含的對(duì)象由架構(gòu)所有者擁有。不過,通過使用 ALTER AUTHORIZATION 語(yǔ)句更改所有權(quán)可以指定備用所有者。如果沒有備用的單個(gè)所有者,則為 NULL。

如果對(duì)象類型為下列類型之一,則為 NULL:

C = CHECK 約束

D = DEFAULT(約束或獨(dú)立)

F = FOREIGN KEY 約束

PK = PRIMARY KEY 約束

R = 規(guī)則(舊式,獨(dú)立)

TA = 程序集(CLR 集成)觸發(fā)器

TR = SQL 觸發(fā)器

UQ = UNIQUE 約束

schema_id
int
包含該對(duì)象的架構(gòu)的 ID。始終包含在 sys 或 INFORMATION_SCHEMA 架構(gòu)中的架構(gòu)范圍內(nèi)的系統(tǒng)對(duì)象。

parent_object_id
int
此對(duì)象所屬對(duì)象的 ID。0 = 不是子對(duì)象。

type
char(2)
對(duì)象類型:

AF = 聚合函數(shù) (CLR)

C = CHECK 約束

D = DEFAULT(約束或獨(dú)立)

F = FOREIGN KEY 約束

FN = SQL 標(biāo)量函數(shù)

FS = 程序集 (CLR) 標(biāo)量函數(shù)

FT = 程序集 (CLR) 表值函數(shù)

IF = SQL 內(nèi)聯(lián)表值函數(shù)

IT = 內(nèi)部表

P = SQL 存儲(chǔ)過程

PC = 程序集 (CLR) 存儲(chǔ)過程

PG = 計(jì)劃指南

PK = PRIMARY KEY 約束

R = 規(guī)則(舊式,獨(dú)立)

RF = 復(fù)制篩選過程

S = 系統(tǒng)基表

SN = 同義詞

SQ = 服務(wù)隊(duì)列

TA = 程序集 (CLR) DML 觸發(fā)器

TF = SQL 表值函數(shù)

TR = SQL DML 觸發(fā)器

U = 表(用戶定義類型)

UQ = UNIQUE 約束

V = 視圖

X = 擴(kuò)展存儲(chǔ)過程

type_desc
nvarchar(60)
對(duì)對(duì)象類型的說明:

AGGREGATE_FUNCTION

CHECK_CONSTRAINT

DEFAULT_CONSTRAINT

FOREIGN_KEY_CONSTRAINT

SQL_SCALAR_FUNCTION

CLR_SCALAR_FUNCTION

CLR_TABLE_VALUED_FUNCTION

SQL_INLINE_TABLE_VALUED_FUNCTION

INTERNAL_TABLE

SQL_STORED_PROCEDURE

CLR_STORED_PROCEDURE

PLAN_GUIDE

PRIMARY_KEY_CONSTRAINT

RULE

REPLICATION_FILTER_PROCEDURE

SYSTEM_TABLE

SYNONYM

SERVICE_QUEUE

CLR_TRIGGER

SQL_TABLE_VALUED_FUNCTION

SQL_TRIGGER

USER_TABLE

UNIQUE_CONSTRAINT

VIEW

EXTENDED_STORED_PROCEDURE

create_date
datetime
對(duì)象的創(chuàng)建日期。

modify_date
datetime
上次使用 ALTER 語(yǔ)句修改對(duì)象的日期。如果對(duì)象為表或視圖,則創(chuàng)建或修改表或視圖的聚集索引時(shí),modify_date 也會(huì)隨之更改。

is_ms_shipped
bit
對(duì)象由內(nèi)部 SQL Server 組件創(chuàng)建。

is_published
bit
對(duì)象為發(fā)布對(duì)象。

is_schema_published
bit
僅發(fā)布對(duì)象的架構(gòu)。

 

四、備注
可將 OBJECT_ID 、OBJECT_NAME 和 OBJECTPROPERTY () 內(nèi)置函數(shù)應(yīng)用于 sys.objects 中顯示的對(duì)象。

此視圖有一個(gè)具有相同架構(gòu)的版本,名為 sys.system_objects ,該版本顯示系統(tǒng)對(duì)象。還有另一個(gè)同時(shí)顯示系統(tǒng)對(duì)象和用戶對(duì)象的視圖,名為 sys.all_objects 。所有這三個(gè)目錄視圖的結(jié)構(gòu)都相同。

在此版本的 SQL Server 中,擴(kuò)展索引(例如 XML 索引或空間索引)將視為 sys.objects 中的內(nèi)部表(type = IT,type_desc = INTERNAL_TABLE)。對(duì)于擴(kuò)展索引:

name 是索引表的內(nèi)部名稱。
parent_object_id 是基表的 object_id。
is_ms_shipped、is_published 和is_schema_published 列設(shè)置為 0。

五、權(quán)限
在 SQL Server 2005 及更高版本中,目錄視圖中僅顯示用戶擁有的安全對(duì)象的元數(shù)據(jù),或用戶對(duì)其擁有某些權(quán)限的安全對(duì)象的元數(shù)據(jù)。有關(guān)詳細(xì)信息,請(qǐng)參閱元數(shù)據(jù)可見性配置。

 

六、示例
A. 返回在最近 N 天內(nèi)修改過的所有對(duì)象
運(yùn)行以下查詢之前,請(qǐng)使用有效值替換 <database_name> 和 <n_days> 。

復(fù)制代碼
USE <database_name>;
Go
SELECT name AS object_name
,SCHEMA_NAME(schema_id) AS schema_name
,type_desc
,create_date
,modify_date
FROM sys.objects
WHERE modify_date > GETDATE() - <n_days>
ORDER BY modify_date;
GO
B. 返回指定存儲(chǔ)過程或函數(shù)的參數(shù)
運(yùn)行以下查詢之前,請(qǐng)使用有效名稱替換 <database_name> 和 <schema_name.object_name> 。

復(fù)制代碼
USE <database_name>;
GO
SELECT SCHEMA_NAME(schema_id) AS schema_name
,o.name AS object_name
,o.type_desc
,p.parameter_id
,p.name AS parameter_name
,TYPE_NAME(p.user_type_id) AS parameter_type
,p.max_length
,p.precision
,p.scale
,p.is_output
FROM sys.objects AS o
INNER JOIN sys.parameters AS p ON o.object_id = p.object_id
WHERE o.object_id = OBJECT_ID('<schema_name.object_name>')
ORDER BY schema_name, o.object_name, p.parameter_id;
GO
C. 返回?cái)?shù)據(jù)庫(kù)中的所有用戶定義函數(shù)
運(yùn)行以下查詢之前,請(qǐng)使用有效數(shù)據(jù)庫(kù)名稱替換 <database_name> 。

USE <database_name>;
GO
SELECT name AS function_name
,SCHEMA_NAME(schema_id) AS schema_name
,type_desc
,create_date
,modify_date
FROM sys.objects
WHERE type_desc LIKE '%FUNCTION%';
GO
D. 返回架構(gòu)中每個(gè)對(duì)象的所有者。
運(yùn)行以下查詢之前,請(qǐng)使用有效名稱替換所有的 <database_name> 和 <schema_name> 。

USE <database_name>;
GO
SELECT 'OBJECT' AS entity_type
,USER_NAME(OBJECTPROPERTY(object_id, 'OwnerId')) AS owner_name
,name
FROM sys.objects WHERE SCHEMA_NAME(schema_id) = '<schema_name>'
UNION
SELECT 'TYPE' AS entity_type
,USER_NAME(TYPEPROPERTY(SCHEMA_NAME(schema_id) + '.' + name, 'OwnerId')) ASowner_name
,name
FROM sys.types WHERE SCHEMA_NAME(schema_id) = '<schema_name>'
UNION
SELECT 'XML SCHEMA COLLECTION' AS entity_type
,COALESCE(USER_NAME(xsc.principal_id),USER_NAME(s.principal_id)) AS owner_name
,xsc.name
FROM sys.xml_schema_collections AS xsc JOIN sys.schemas AS s
ON s.schema_id = xsc.schema_id
WHERE s.name = '<schema_name>';
GO

 

七、問題:若系統(tǒng)提示,對(duì)象名‘sys.objects’不存在,如何解決?

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tb1]') AND type in (N'U'))

修改為

IF NOT EXISTS (SELECT * FROM sysobjects WHERE id = OBJECT_ID(N'[dbo].[tb1]') AND type in (N'U'))

 

來自: http://hi.baidu.com/yingjianglinx/blog/item/cb12041663dd1600c83d6de6.html

0
0

我的同類文章

參考知識(shí)庫(kù)

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产美女精品午夜福利视频 | 国产午夜精品在线免费看| 欧美精品亚洲精品日韩专区| 亚洲国产精品国自产拍社区| 欧美国产日产在线观看| 亚洲国产综合久久天堂| 欧美日韩三区在线观看| 国产毛片av一区二区三区小说| 国产一级二级三级观看| 国产一级特黄在线观看| 精品一区二区三区中文字幕| 欧美大胆女人的大胆人体| 亚洲欧美日韩在线中文字幕| 1024你懂的在线视频| 好吊日成人免费视频公开| 欧美野外在线刺激在线观看| 欧美激情视频一区二区三区| 久七久精品视频黄色的| 在线一区二区免费的视频| 欧美精品二区中文乱码字幕高清| 欧美丝袜诱惑一区二区| 国产成人av在线免播放观看av | 久久机热频这里只精品| 在线观看国产午夜福利| 久久热在线视频免费观看| 亚洲国产av在线观看一区| 亚洲精品伦理熟女国产一区二区 | 亚洲成人免费天堂诱惑| 97人妻精品一区二区三区男同| 亚洲国产精品久久精品成人| 亚洲天堂一区在线播放| 懂色一区二区三区四区| 久久老熟女一区二区三区福利| 91日韩欧美在线视频| 97人摸人人澡人人人超碰| 亚洲高清一区二区高清| 国产精品午夜性色视频| 日韩女优精品一区二区三区| 蜜臀人妻一区二区三区| 高中女厕偷拍一区二区三区| 国产一级片内射视频免费播放|