SQL Server 2000 ——系統資料表和系統檢視表

來源:互聯網
上載者:User
一、系統資料表

資料字典的詳細資料請查SQL SERVER BOL,這裡僅列出一部分。

1.1、sysservers

1、查看所有本機伺服器及連結的伺服器

select * from master..sysservers

1.2、sysdatabases

1:查詢非sa建立的所有資料庫

select * from master..sysdatabases

where sid not in(select sid from master..syslogins where name='sa')

--或者

select dbid, name AS DB_NAME from master..sysdatabases

where sid <> 0x01

1.3、sysobjects

1:擷取當前資料庫中的所有使用者表

select name from sysobjects where xtype='U' and status>0

為什麼要加status>0,因為表dtproperties,雖然該表的xtype為U,實質上它是系統資料表。

dtproperties這個表裡儲存的是關係圖,如果沒建關係圖,就是空的。

注意:這個表只是資料庫物件的屬性,如果想要看錶、索引詳細的屬性,查看sysindexes。

2:查看當前資料庫中所有預存程序

select name as 預存程序名稱 from sysobjects where xtype='P' and status>0

為什麼要加status>0,是為了去掉當前資料庫中的系統預存程序。

註:該系統資料表中type與xtype的區別是什嗎?

Type是在SQL SERVER 6.0就有的,xType在SQL SERVER 7.0才出現,Type的保留只是為了向後相容。每種資料庫物件的類型詳見SQL SERVER BOL。

1.4、syscolumns

1:擷取表或視圖的所有欄位,預存程序或函數的所有參數

select name from syscolumns where id=object_id('表名')

1.5、sysproperties

1:怎麼把SQL SERVER中表設計和表注釋讀出來

--表的注釋全在sysproperties裡

select b.name,value from sysproperties as a,sysobjects as b

where a.id=b.id and b.name='表名'

1.6、sysindexes

1:根據叢集索引,快速查詢表的行數

SELECT rowcnt,indid FROM sysindexes WHERE id=OBJECT_ID('tableName')and indid < 2

注意:使用這種方法可能不精確,因為系統的統計資訊在某些時候不一定是準確的。關於統計的維護(dbcc updateusage()),詳見《SQL SERVER 效能最佳化——查詢最佳化》series。

2:查看索引表資訊

select

table_Name=sysobjects.Name,

    index_Name=sysindexes.Name,

    Type=sysobjects.type,

    分配索引頁=sysindexes.reserved,

    使用索引頁=sysindexes.used,

    葉子層頁=sysindexes.Dpages,

    非葉子層頁=sysindexes.used-sysindexes.Dpages,

    rows=sysindexes.rowcnt

from sysindexes left outer join sysobjects on sysindexes.id=sysobjects.id

where sysindexes.indid>0 and sysindexes.indid<255 and sysindexes.status & 64=0

注意:若發現非葉子層的頁數為負數,最好是運行DBCC UPDATEUSAGE ('dbname','tbname','ixname')來更新一下sysindexes的資訊

1.7、syslogins

SQL SERVER 伺服器的登入資訊,比如:sa,有關登入、使用者、角色的資訊詳見《SQL SERVER 2000 管理——安全——使用者權限》。

select * from syslogins

select * from sysxlogins

sysxlogins是syslogins的精簡版,BOL中沒有說明,不推薦使用。

 

1.8、sysprocesses

1:查看使用者進程資訊

select spid,uid,syslogins.name,login_time,net_address from sysprocesses,syslogins where sysprocesses.sid=syslogins.sid

2:查看資料庫啟動時間

select convert(varchar(30),login_time,120) from master..sysprocesses where spid=1

1.9、sysdepends

1:查看與某一個表相關的視圖、預存程序、函數

select * from sysdepends where depid=object_id('表名')

--或者

select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%'

注意:這種查法,只適用在沒有with Encryption選項,即沒有加密該對象時。

--或者

sp_depends

注意:這個表的統計資訊並不準確,沒有什麼好的辦法,查詢結果只可用於參考。

1.10、sysmessages

SQL SERVER返回的內部錯誤都有在這裡,可自行定義進行錯誤的添加,但一般我習慣於建立一個錯誤的表來定義自己程式中的錯誤。

select * From master..sysmessages where error=5037

1.11、sysfiles、sysfilegroups

1、查詢當前資料庫的檔案使用方式

select name,filename,size/128 as 'used(M)',case maxsize/128 when 0 then 'no limit' else cast(maxsize/128 as varchar(10)) end as'total(M)' from sysfiles

2、查詢當前資料庫的表所在檔案組

select distinct a.id,a.name,b.groupid,c.groupname from sysobjects a inner join sysindexes b on a.id=b.id

inner join sysfilegroups c on b.groupid=c.groupid

where a.xType='U' and a.status>0 order by a.name

sysfiles1是sysfiles的精簡版,BOL中沒有說明,不推薦使用。

二、系統檢視表

在master資料庫中有INFORMATION_SCHEMA和system_function_schema兩個使用者,它們的登入是<無>,這是系統內建的兩個使用者。

INFORMATION_SCHEMA擁有自已的視圖,在SQL Server 2000中沒有被廣泛使用,因為很多時候都可以從系統資料表中得到我們想要的結果,同樣到了SQL Server 2005中,被廣泛使用的仍然是sys所擁有的視圖,SQL Server 2005的相關內容詳見後續《SQL Server 2005》series文章。舉例如下:

1、查詢某個表的哪些欄位不允許為空白

select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS

where IS_NULLABLE='NO' and TABLE_NAME='stb_User'

2、查詢某個表的鍵約束

select * from INFORMATION_SCHEMA.KEY_COLUMN_USAGE

where TABLE_NAME='stb_User'

註:鍵約束,是指除了CHECK、NOT NULL外的約束,即PK,FK,UNIQUE,DEFAULT不是約束。

 

相關文章

聯繫我們

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