系統(tǒng)表用的不多,寫幾個常用的系統(tǒng)表
各個數(shù)據(jù)庫中的系統(tǒng)表:
1.SysObject:
? 存放數(shù)據(jù)庫中的各個對象!
? 最重字段
?? 1.1 Name,Id,Crdate,Xtype (U :用戶表,V:視圖,Tr:觸發(fā)器,P:存儲過程,S,系統(tǒng)表)
?? 1.2 常用函數(shù) Object_ID('對象名'),Object_Name?
?? 此外我們?nèi)绻肷?,2,3,4,5這樣的等差數(shù)列,可以這樣做
?? Select Identity(int,1,1) As Id Into # From SysObjects,SysColumns??
2.SysColumns
? 存放各列的信息
? 最重字段
?? 2.1 Name,Id,Colid--字段在表中存放的順序
?? 設(shè)一個表中字段有很多,想列出某表除某字段外的所有字段,可以這樣寫
?? Declare @Fields Varchar(5000)
?? Select @Fields=@Fields+Name
?? From SysColumns
?? Where Id=Object_ID('Test') and Name Not In ('字段1','字段2')
?? 又如如何用列序號選擇特定列
?? Create Function F_ColumnOrder(@TableName Varchar(10),@Colid Int)
?? Returns Table
?? As
?? Return
?? Select Name From SysColumns
?? Where ID=Object_ID(@TableName) And Colid=@Colid
--Try
Select * From Dbo.F_ColumnOrder('Users',2)
??
3.SysFiles
? 如果我們想知道SQL的數(shù)據(jù)文件存放目錄的話,可以用
? Select FileName From SysFiles
4.SysComments
? 保存視圖或存儲過程的語句!
5.Sysforeignkeys
? fkeyid:外鍵表對象ID,rKeyid:主鍵表對象ID
有時我們想把數(shù)據(jù)庫中的所有表都去掉,但是有約束的存在,有些表必須在主表前刪除,否則就會報錯,
這種情況下我們就通過該表來實(shí)現(xiàn)
**********************************************************
Master表中的系統(tǒng)表
SysDataBases
? 重要字段
??? 1.1 Name,Dbid,Crdate
????? 常用函數(shù) DB_ID('數(shù)據(jù)庫名')
sysaltfiles
??? 保存各個數(shù)據(jù)庫的MDF文件的物理地址
SysProcesses
??? 保存進(jìn)程信息
??? Kill? spid 殺掉某進(jìn)程
5.注意sp_MsForEachTable函數(shù)
? 刪除某數(shù)據(jù)庫中表
?? Exec Sp_MsForEachTable 'Truncate Table ?'
?? 注意:有約束的不能刪除,會出錯的
6.如果想改系統(tǒng)表怎么辦?
? 2種方法
??? 1.通過查詢分析器改
??? 用如下語句:
???? Exec Sp_Configure 'allow updates',1--允計修改
???? Reconfigure with override
????
???? Exec Sp_Configure 'allow updates',0--不允計修改
???? Reconfigure with override????
??? 2.通過企業(yè)管理器改
???? 在SQL實(shí)例上右鍵-屬性-允計修改系統(tǒng)目錄直接進(jìn)行修改
posted on 2007-03-21 10:12
石正 閱讀(724)
評論(0) 編輯 收藏