一、預備知識提要:
1. 創建數據庫需要的權限
至少要擁有:
(1)create database;
(2)create any database;
(3)alter any database
2. 數據庫的上限
在同一實例中,最多可以創建32767個數據庫,超過則會失敗!
3. 數據庫文件和文件組
每個SQL Server 2008數據庫至少包括2個文件:
(1)數據文件 : 包含的是 數據庫的數據和對象。它分為:主要數據文件和次
要數據文件,擴展名分別為 .mdf和.ndf
(2)日志文件 : 包含的是 用於恢復數據庫時所需要的信息。它分為:主要日志
文件和次要日志文件,擴展名都為.ldf
技巧:
在默認情況下,數據庫的數據文件和日志文件都保存在同一目錄下,但這並
不是最佳方案,為了提高存儲速度,
強烈建議:
將數據文件和日志文件保存在不同的驅動器上!
文件組
為了方便對數據庫文件進行管理,可以將數據庫文件集中起來放在文件組中.
每個數據庫都有一個主要文件組.該組包括主要數據文件和未放入其他文件組的
所有次要文件。當然用戶也可自行定義不同的文件組。
4. 數據庫狀態
SQL Server 2008數據庫永遠處於特定的狀態中,包括7種狀態:
(1)online : 可以對數據進行訪問。(在線)
(2)offline: 數據庫無法使用。(離線)
(3)restoring : 表示正在還原主文件組的一個或多個文件,或正在離線還原一個
或多個輔助文件,此時數據庫不可用。(還原)
(4)recovering : 表示正在恢復數據庫。該狀態是個暫時性的狀態,恢復成功
後,數據庫會自動回到在線狀態。(恢復)
(5)recovering pending : 此時數據庫並未損壞,但很有可能缺少文件。此時
數據庫不可用,並等待用戶執行操作來完成恢復工作。(恢復等待)
(6)suspect : 表示數據庫裡的文件組(至少是主文件組)可疑或已經損壞,SQL
Server 2008啟動過程無法恢復數據庫,此時數據不能使用。(可疑)
(7)emergency : 一般用於故障排除。此時數據庫處於單用戶模式,可以修復
或還原。數據庫標記為只讀,並禁用日志記錄,只有具備sysadmin服務
器角色的成員才能訪問。(緊急)
二、 舉例說明
例一: 創建一個數據庫,所有的設置采用默認值.
create database 測試數據庫
例二: 創建一個數據庫,指定數據庫的數據文件所在位置.
create database 例二數據庫
on
(
name='例二數據庫',
filename='d:DBtest例二數據庫.mdf'
)
例三:創建一個數據庫,指定數據庫的數據文件所在位置、初始容量、最大容量
和文件增長的數量。
create database 例三數據庫
on
(
name='例三數據庫',
filename='d:DBtest例三數據庫.mdf',
size=5MB,
maxsize=10MB,
filegrowth=5%
)
例四: 創建一個數據庫,指定數據庫的數據文件和日志文件所在位置.
create database 例四數據庫
on
(
name='例四數據庫數據文件',
filename='D:DBtest例四數據庫數據文件.mdf',
size=5MB,
maxsize=10MB,
filegrowth=5%
)
log on
(
name='例四數據庫日志文件’,
filename='D:DBtest例四數據庫日志文件.ldf'
)
例五:創建一個數據庫,它總共包含五個數據文件和兩個自定義的文件組。
create database 例五數據庫
on
(
name='例五數據庫數據文件1',
filename='d:DBtest例五數據庫數據文件1.mdf',
size=5MB,
maxsize=10MB,
filegrowth=5%
),(
name='例五數據庫數據文件2',
filename='d:DBtest例五數據庫數據文件2.ndf',
size=5MB,
maxsize=10MB,
filegrowth=5%
),
filegroup 例五數據庫數據文件組1
(
name='例五數據庫數據文件組1的數據文件',
filename='d:DBtest例五數據庫數據文件組1的數據文件.ndf',
size=5MB,
maxsize=10MB,
filegrowth=5%
),
filegroup 例五數據庫數據文件組2
(
name='例五數據庫數據文件組2的數據文件1',
filename='d:DBtest例五數據庫數據文件組2的數據文件1.ndf',
size=5MB,
maxsize=10MB,
filegrowth=5%
),(
name='例五數據庫數據文件組2的數據文件2',
filename='d:DBtest例五數據庫數據文件組2的數據文件2.ndf',
size=5MB,
maxsize=10MB,
filegrowth=5%
)
log on
(
name='例五數據庫日志',
filename='d:DBtest例五數據庫日志文件.ldf'
)
例六: 創建一個數據庫,並指定排序規則。
create database 例六數據庫
on
(
name='例六數據庫',
filename='d:DBtest例六數據庫.mdf'
)
collate Chinese_PRC_CI_AS
在使用collate指定排序規則之前,一定要先知道排序規則名。
為何才能知道排序規則名呢?請用下面的SQL語句查詢:
select * from ::fn_helpcollations ()
三、修改數據庫設置
1. 使用SQL Server Management Studio修改數據庫設置
1) 查看數據庫的基本信息
【數據庫屬性】---【 基本】選項頁裡,可以看到數據庫的基本信息。
2) 增加、刪除與修改數據庫文件
【數據庫屬性】---【文件】選項頁裡。
重點: 典型案例
例七: 將名為"例二數據庫"的數據庫改名為"例七數據庫"。
方法一:
alter database 例二數據庫
modify name = 例七數據庫
方法二:
exec sp_renamedb '例二數據庫','例七數據庫'
------------------------------------------------------
例八:為“例六數據庫”增加一個數據文件。
alter database 例六數據庫
add file (name=增加的數據文件,
filename='d:DBtest例六數據庫增加的數據文件.ndf')
--------------------------------------------------------
例九:為“例六數據庫”增加一個日志文件。
alter database 例六數據庫
add log file (name=例九增加的日志文件,
filename='d:DBtest例九增加的日志文件.ldf',
size=3MB,
maxsize=50MB,
filegrowth=10% )
--------------------------------------------------------
例十:將“例六數據庫”中名為“增加的數據文件”的數據文件改名。
alter database 例六數據庫
modify file(name=增加的數據文件,
newname = 例十數據文件,
filename = 'd:DBtest例十數據文件.ndf')
例十一: 修改’例六數據庫’的排序規則
alter database 例六數據庫
collate Chinese_PRC_CI_AS_KS
例十二: 在’例六數據庫’裡刪除一個數據文件.
alter database 例六數據庫
remove file 例十數據文件
例十三: 在’例六數據庫’裡添加一個文件組
alter database 例六數據庫
add filegroup 例十三文件組
例十四: 在’例六數據庫’裡為一個文件組改名.
alter database 例六數據庫
modify filegroup 例十三文件組
name=例十四文件組
例十五: 在’例六數據庫’裡添加一個數據文件(如:例十五數據文件)到一個文件組(如:例十四文件組),並將該文件組設置為默認文件組.因alter database一次只能修改數據庫的一個屬性,故下例中使用了2個alter database語句.
alter database 例六數據庫
add file (name=例十五數據文件,
filename=’d:DBtest例十五數據文件.ndf’)
to filegroup 例十四文件組
go
alter database 例六數據庫
modify filegroup 例十四文件組 default
例十六: 在“例六數據庫”裡刪除“例十四文件組”.由於“例十四文件組”是默認文件組,其中又包含了一個文件(例十五數據文件).故,要從“例六數據庫”中刪除“例十四文件組”,必須先進行以下操作:
(1)將其他文件組設置為默認文件組,如本例中將PRIMARY文件組設置為默認文件組。
由於PRIMARY是保留字,故在使用它的時候,要用方括號括起來。
alter database 例六數據庫
modify filegroup [PRIMARY] default
(2)刪除“例十四文件組”中包含的“例十五數據文件”。
alter database 例六數據庫
remove file 例十五數據文件
(3)刪除“例十四文件組”。
alter database 例六數據庫
remove filegroup 例十四文件組
例十七:將“例六數據庫”裡的一個文件組設置為只讀。
(1)由於primary文件組是不能設置為只讀的,故先添加一個文件組(如:例十七文件組)。
alter database 例六數據庫
add filegroup 例十七文件組
(2)由於空文件組(如:例十七文件組)是不能設置為只讀的,所以要再添加一個文件(如:例十七數據文件)到該文件組中。
alter database 例六數據庫
add file (name=例十七數據文件,
filegroup=’d:Dbtest例十七數據文件.ndf’)
to filegroup 例十七文件組
(3)將文件組(例十七文件組)
alter database 例六數據庫
modify filegroup 例十七文件組 read_only
例十八:將“例六數據庫”設置為只有一個用戶可訪問。
alter database 例六數據庫
set single_user
例十九:設置“例六數據庫”可自動收縮。
alter database 例六數據庫
set auto_shrink on