SQL 系統性SP功能紀錄

  • 126
  • 0
  • SQL
  • 2021-02-19

SQL 特殊語法加成

 

物件類型 XType
AF = 彙總函式 (CLR)            = CHECK 條件約束    
D = 預設值或 DEFAULT 條件約束              = FOREIGN KEY 條件約束  
L = 記錄         FN = 純量函數
FS = 組件 (CLR) 純量函數   FT = 組件 (CLR) 資料表值函式
IF = 內嵌資料表函數          IT = 內部資料表      = 預存程序
PC = 組件 (CLR) 預存程序  PK = PRIMARY KEY 條件約束 (類型是 K)
RF = 複寫篩選預存程序      = 系統資料表       SN = 同義字  SQ = 服務佇列
TA = 組件 (CLR) DML 觸發程序       TF = 資料表函數   TR = SQL DML 觸發程序
TT = 資料表類型                           U = 使用者資料表
UQ = UNIQUE 條件約束 (類型是 K)   = 檢視            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  --刪除暫存資料表