資料庫相關的語法
--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_helpdb :查詢資料庫的相關資訊
- sp_helpfile :查詢資料庫檔案的相關資訊
- sys.dm_db_index_physical_stats :
sp_spaceused : 查詢資料庫或資料表的使用情形
sp_spaceused 預存程序
- 若後面加TableName,可整個檢視表格的資料列的數目、已使用磁碟空間大小、保留的磁碟空間大小。
- 若後面沒加參數,可檢視資料庫的保留和使用的磁碟空間大小。 ```sql –更新統計資料 (耗資源指令) EXEC sp_updatestats;
–報告和更正目錄檢視中不準確的頁面和資料列計數 (耗資源指令) DBCC updateusage(0);
–顯示資料庫大小 EXEC sp_spaceused @updateusage=N’true’;

{: .note}
> reserved = data + index_size + unused
> reserved 和 unallocated space 都是指資料頁的空間大小。
> database_size 是整個資料庫大小,包含 log 記錄檔的大小。所以 database_size 必定會大於 reserved + unallocated space 的總和。
```sql
--顯示資料表大小
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;
