SQL 特殊語法加成
物件類型 XType
AF = 彙總函式 (CLR) C = CHECK 條件約束
D = 預設值或 DEFAULT 條件約束 F = FOREIGN KEY 條件約束
L = 記錄 FN = 純量函數
FS = 組件 (CLR) 純量函數 FT = 組件 (CLR) 資料表值函式
IF = 內嵌資料表函數 IT = 內部資料表 P = 預存程序
PC = 組件 (CLR) 預存程序 PK = PRIMARY KEY 條件約束 (類型是 K)
RF = 複寫篩選預存程序 S = 系統資料表 SN = 同義字 SQ = 服務佇列
TA = 組件 (CLR) DML 觸發程序 TF = 資料表函數 TR = SQL DML 觸發程序
TT = 資料表類型 U = 使用者資料表
UQ = UNIQUE 條件約束 (類型是 K) V = 檢視 X = 擴充預存程序
名稱 | 功能說明 - 最完整的說明還是請參考MSDN |
sys.sysfiles | 觀看資料庫的檔案(邏輯名稱與檔案位置路徑) |
sys.sysfilegroups | 觀看資料庫的檔案群組() |
sys.syscolumns | 列出資料表與檢視的欄位內容,可以搭配 sys.sysobjects 與 sys.systypes 顯示詳細內容 |
sys.systypes | 條列預設與自訂的資料型別 |
sys.sysusers | 觀看資料庫的所有使用者(可運用內建安全性函數
suser_sname()、USER_NAME()得到連線使用者名稱 ) |
sys.sysservers | 取得資料庫伺服器相關資訊(可運用 @@SERVERNAME 伺服器名稱 、@@SERVICENAME Instance名稱) |
sys.sysconfigures | 資料庫組態設定,搭配 sp_configure 使用 |
sys.sysdatabases | 查詢已建立的資料庫,CmptLevel 是顯示相容性層級 |
sys.sysobjects | 顯示資料庫物件(包含條件約束、預設值、記錄、規則和預存程序) |
sys.sysprocesses | 目前執行之處理序(Process),也可以用預存程序 sp_who 查 |
sys.messages | MS-SQL 的錯誤訊息代碼,Language_id=1028 為中文 select * from sys.messages where language_id =1028 |
可以看現在資料表的狀態 檢視完可以配合REBUILD 跟壓縮節省空間
DECLARE @tblname varchar(50) --資料表名稱(使用者資料表名稱變數)
-- 判斷暫存檔是否存在資料,存在則刪除它
if exists (select * from dbo.sysobjects
where id = object_id(N'dbo.#tmpStatics')
and OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE #tmpStatics --暫存資料表
CREATE TABLE #tmpStatics ( --建立暫存資料表,這張表是依 sp_spaceused 產出的內容格式所建立的
name varchar(50) NULL , --資料表名稱
rows varchar(50) NULL , --資料表現有的資料列數
reserved varchar(50) NULL , --資料庫中的物件所配置的空間大小
data varchar(50) NULL , --資料所用的空間大小
index_size varchar(50) NULL , --索引所用的空間大小
unused varchar(50) NULL ) --保留給資料庫中之物件但尚未使用的空間大小
DECLARE cur_TableStatics CURSOR FORWARD_ONLY FOR --- 宣告 Cursor
SELECT name FROM sysobjects WHERE xtype='U' ORDER BY name --取得使用者資料表名稱
OPEN cur_TableStatics --–- 啟用 Cursor
FETCH NEXT FROM cur_TableStatics --–-逐步的抓取從 sysobjects 找到的資料表名稱
INTO @tblname
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT #tmpStatics --–-將 sp_spaceused 查詢到的值,寫入暫存資料表中
EXEC sp_spaceused @tblname,@updateusage = N'TRUE' --顯示資料表的相關磁碟空間資訊
FETCH NEXT FROM cur_TableStatics --抓下一筆
INTO @tblname
END
CLOSE cur_TableStatics --結束釋放 cursor
DEALLOCATE cur_TableStatics
SELECT * FROM #tmpStatics --最後把產出的暫存檔做輸出顯示
ORDER BY Data
DROP TABLE #tmpStatics --刪除暫存資料表