SQL Server 中的系統資料表,sqlserver系統資料表
儲存SQL所有的系統資訊。儲存有關資料庫服務中的中繼資料所謂中繼資料即(比如資料服務器有哪些使用者資料庫、資料庫伺服器有哪些登陸帳號,資料庫中都有哪些表,每個表都有哪些欄位 每個資料庫有哪些預存程序、視圖等等的資料),系統資料表一般sys開頭。
任何使用者都不應直接更改系統資料表。 例如,不要嘗試使用 DELETE、UPDATE、INSERT 語句或使用者定義的觸發器修改系統資料表。
若要檢索儲存在系統資料表中的資訊,應用程式應使用下列組件之一:
幾個重要的系統資料表
一、master.dbo.sysdatabases系統資料表:
Microsoft SQL Server 上的每個資料庫在表中佔一行。
最初安裝 SQL Server 時,sysdatabases 包含 master、model、msdb、mssqlweb 和 tempdb 資料庫的項。
關鍵字段:
name :庫的名字;
dbid :庫的ID,dbid從1到5是系統的。分別是:master、model、msdb、mssqlweb、tempdb 這五個庫。
select * from master.dbo.sysdatabases 就可以查詢出所有的庫名。
二、Sysobjects:(以前的部落格有對此表的介紹)
SQL-SERVER的每個資料庫內都有此系統資料表,它存放該資料庫內建立的所有對象,如約束、預設值、日誌、規則、預存程序等。
關鍵字段
Name:對象名稱
id:對象ID
xtype(type):物件類型
uid:所有者對象使用者id
status:對象狀態。
物件類型(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 = 擴充預存程序
當xtype='U' and status>0代表是使用者建立的表,對象名就是表名,對象ID就是表的ID值(object_id(‘表名’))。
select * fromwyl_db.dbo.sysobjects where xtype='U' and status>0 就可以列出庫wyl_db中所有的使用者建立的表名。
三、syscolumns :
每個表和視圖中的每列在表中佔一行,預存程序中的每個參數在表中也佔一行。該表位於每個資料庫中。
關鍵字段有:
name :欄位名稱
id:表的id號
colid :欄位id號。
其中的 ID 是 剛上我們用sysobjects得到的表的ID號。
select name fromwyl_db.dbo.syscolumns where id=object_id('表名'): 獲得wyl_db.dbo.syscolumns某個表中的欄位
其他系統資料表
sysaltfiles 儲存資料庫的檔案
syscharsets 字元集與排序次序
sysconfigures 配置選項
syscurconfigs 當前配置選項
syslanguages 語言
syslogins 登陸帳號資訊
sysoledbusers 連結的伺服器登陸資訊
sysprocesses 進程
sysremotelogins 遠程登入帳號
sysconstrains 限制
sysfilegroups 檔案組
sysfiles 檔案
sysforeignkeys 外部關鍵字
sysindexs 索引
sysmenbers 角色成員
syspermissions 許可權
systypes 使用者定義資料類型
sysusers 使用者