日期:2014-05-16  浏览次数:20442 次

【SQL Server DBA】日常维护语句


数据库的日常维护,可以通过SQL Server中的维护计划来自动实现,非常方便。


不过,也不是所有的维护,都可以通过维护计划来实现,下面将通过代码来实现。



1、检查数据库完整性

dbcc checkdb(test)


通过加tablock提高速度

dbcc checkdb(test) with tablock

2、数据库重命名、修改恢复模式、修改用户模式

--数据库重命名  
ALTER DATABASE WC  
MODIFY NAME = test 


--设置数据库为完整恢复模式
alter database test
set recovery full


--只允许一个用户访问数据库  
alter database test  
set single_user   
with rollback after 10 seconds --指定多少秒后回滚事务  
  
  
--只有sysadmin,dbcreator,db_owner角色的成员可以访问数据库  
alter database wc  
set restricted_user   
with rollback immediate        --立即回滚事务  
  
  
--多用户模式 
alter database wc  
set multi_user  
with no_wait       --不等待立即改变,如不能立即完成,那么会导致执行错误  


3、扩展数据库:增加文件组、增加文件、修改文件大小、修改文件的逻辑名称

--添加文件组
ALTER DATABASE test
ADD FILEGROUP WC_FG8


--添加数据文件
ALTER DATABASE test
ADD FILE
(
	NAME = WC_FG8,
	FILENAME = 'D:\WC_FG8.ndf',
	SIZE = 1mb,
	MAXSIZE = 10mb,
	FILEGROWTH = 1mb
)
TO FILEGROUP WC_FG8


--添加日志文件
ALTER DATABASE test
ADD LOG FILE
(
	NAME = WC_LOG3,
	FILENAME = 'D:\WC_FG3.LDF',
	SIZE = 1MB,
	MAXSIZE = 10MB,
	FILEGROWTH = 100KB
)


--修改数据文件的大小,增长大小,最大大小
ALTER DATABASE test
MODIFY FILE
(
	NAME = 'WC_FG8',
	SIZE = 2MB,      --必须大于之前的大小,否则报错
	MAXSIZE= 8MB,
	FILEGROWTH = 10%
)


--修改数据文件或日志文件的逻辑名称
ALTER DATABASE test
MODIFY FILE
(
	NAME = WC_LOG3,
	NEWNAME = WC_FG33
)

4、移动文件

--由于在SQL Server中文件组、文件不能离线
--所以必须把整个数据库设置为离线
checkpoint
go

ALTER DATABASE WC
SET OFFLINE
go


--修改文件名称
ALTER DATABASE WC
MODIFY FILE
(
	NAME = WC_fg8,
	FILENAME = 'D:\WC\WC_FG8.NDF'
)
go


--把原来的文件复制到新的位置:'D:\WC\WC_FG8.NDF'


--设置数据库在线
ALTER DATABASE WC
SET ONLINE


5、设置默认文件组、只读文件组

--设置默认文件组
ALTER DATABASE WC
MODIFY FILEGROUP WC_FG8 DEFAULT


--设为只读文件组
--如果文件已经是某个属性,不能再次设置相同属性
ALTER DATABASE WC
MODIFY FILEGROUP WC_FG8 READ_WRITE

6、收缩数据库、收缩文件

--收缩数据库  
DBCC SHRINKDATABASE('test',    --要收缩的数据库名称或数据库ID  
                    10         --收缩后,数据库文件中空间空间占用的百分比