2013年5月28日 星期二

資料庫物件

資料庫相關的語法

--CREATE DATABASE
CREATE DATABASE [ABC] ON PRIMARY 
(	/*資料檔*/
	NAME = N'AAA',							/*邏輯名稱*/
	FILENAME = N'D:\Database\AAA.mdf' ,		/*檔案路徑*/
	SIZE = 3072KB ,							/*初始大小*/
	MAXSIZE = UNLIMITED,					/*檔案限制*/
	FILEGROWTH = 1024KB						/*檔案成長大小*/
)
LOG ON 
(	/*記錄檔*/
	NAME = N'AAA_log',						
	FILENAME = N'D:\Database\AAA_log.ldf' , 
	SIZE = 1024KB , 
	MAXSIZE = 2048GB , 
	FILEGROWTH = 10%
)

--修改資料庫名稱
EXEC sp_rename 'ABC', 'ABCDE', 'DATABASE'

--查詢資料庫邏輯名稱, 檔案路徑, 初始大小, 檔案限制, 檔案成長大小
EXEC sp_helpdb 'ABCDE'

--修改資料庫邏輯名稱
Alter DataBASE [ABCDE]
	MODIFY FILE(NAME= 'AAA' ,NEWNAME= 'ABCDE' )
Alter DataBASE [ABCDE]
	MODIFY FILE(NAME= 'AAA_log', NEWNAME= 'ABCDE_log' )

與資料庫物件相關的指令

sp_spaceused : 查詢資料庫或資料表的使用情形

sp_spaceused 預存程序

  • 若後面加TableName,可整個檢視表格的資料列的數目已使用磁碟空間大小保留的磁碟空間大小
  • 若後面沒加參數,可檢視資料庫的保留和使用的磁碟空間大小。
--更新統計資料 (耗資源指令)
EXEC sp_updatestats;

--報告和更正目錄檢視中不準確的頁面和資料列計數 (耗資源指令)
DBCC updateusage(0);

--顯示資料庫大小
EXEC sp_spaceused @updateusage=N'true';

PS:

  • reserved = data + index_size + unused
  • reserved 和 unallocated space 都是指資料頁的空間大小。
  • database_size 是整個資料庫大小,包含 log 記錄檔的大小。所以 database_size 必定會大於 reserved + unallocated space 的總和。
--顯示資料表大小
EXEC sp_spaceused 'TestTable';

--取得所有資料表大小
CREATE TABLE #t 
( 
    [name] NVARCHAR(128),
    [rows] CHAR(11),
    [reserved] VARCHAR(18), 
    [data] VARCHAR(18), 
    [index_size] VARCHAR(18),
    [unused] VARCHAR(18)
) 
INSERT #t EXEC sys.sp_MSforeachtable 'EXEC sp_spaceused ''?''' 
SELECT name, rows, data as data_size, index_size , unused FROM #t
drop table #t

sp_helpdb : 查詢資料庫的相關資訊

sp_helpdb 可用來傳回特定資料庫或所有資料庫的相關資訊。

EXEC sp_helpdb 'TestDB'

sp_helpfile : 查詢資料庫檔案的相關資訊

若僅想得知資料庫檔的實體名稱和屬性,可以使用 sp_helpfile 取得。

EXEC sp_helpfile;

與 Schema 相關物件

沒有留言:

張貼留言