SQL Server DBA维护常用语句
2014-05-12来源:易贤网

数据库的日常维护,可以通过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 --不等待立即改变,如不能立即完成,那么会导致执行错误

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

代码如下:

--添加文件组

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

)

3、移动文件

复制代码 代码如下:

--由于在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

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

代码如下:

--设置默认文件组

ALTER DATABASE WC

MODIFY FILEGROUP WC_FG8 DEFAULT

--设为只读文件组

--如果文件已经是某个属性,不能再次设置相同属性

ALTER DATABASE WC

MODIFY FILEGROUP WC_FG8 READ_WRITE

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

--收缩数据库

DBCC SHRINKDATABASE('test', --要收缩的数据库名称或数据库ID

10 --收缩后,数据库文件中空间空间占用的百分比

)

DBCC SHRINKDATABASE('test', --要收缩的数据库名称或数据库ID

10, --收缩后,数据库文件中空闲空间占用的百分比

NOTRUNCATE --在收缩时,通过数据移动来腾出自由空间

)

DBCC SHRINKDATABASE('test', --要收缩的数据库名称或数据库ID

10, --收缩后,数据库文件中空间空间占用的百分比

TRUNCATEONLY --在收缩时,只是把文件尾部的空闲空间释放

)

--收缩文件

DBCC SHRINKFILE(wc_fg8, --要收缩的数据文件逻辑名称

7 --要收缩的目标大小,以MB为单位

)

DBCC SHRINKFILE(wc_fg8, --要收缩的数据文件逻辑名称

EMPTYFILE --清空文件,清空文件后,才可以删除文件

)

6、删除文件、 删除文件组

代码如下:

--要删除文件,必须要先把文件上的数据删除,或者移动到其他文件或文件组上

--删除数据后,必须要清空文件的内容

DBCC SHRINKFILE(WC_FG8,EMPTYFILE)

--删除文件,同时也在文件系统底层删除了文件

ALTER DATABASE test

REMOVE FILE WC_FG8

--要删除文件组,必须先删除所有文件

--最后删除文件组

ALTER DATABASE test

REMOVE FILEGROUP WC_FG8

7、重新组织索引

ALTER INDEX [idx_temp_lock_id] ON [dbo].[temp_lock]

REORGANIZE

WITH ( LOB_COMPACTION = ON )

8、重新生成索引

代码如下:

ALTER INDEX [idx_temp_lock_id] ON [dbo].[temp_lock]

REBUILD PARTITION = ALL

WITH ( PAD_INDEX = OFF,

STATISTICS_NORECOMPUTE = OFF,

ALLOW_ROW_LOCKS = ON,

ALLOW_PAGE_LOCKS = ON,

ONLINE = OFF,

SORT_IN_TEMPDB = OFF )

9、更新统计信息

代码如下:

--更新表中某个的统计信息

update statistics temp_lock(_WA_Sys_00000001_07020F21)

update statistics temp_lock(_WA_Sys_00000001_07020F21)

with sample 50 percent

update statistics temp_lock(_WA_Sys_00000001_07020F21)

with resample, --使用最近的采样速率更新每个统计信息

norecompute --查询优化器将完成此统计信息更新并禁用将来的更新

--更新索引的统计信息

update statistics temp_lock(idx_temp_lock_id)

with fullscan

--更新表的所有统计信息

update statistics txt

with all

10、执行SQL Server代理作业

11、备份数据库(完整、差异、日志备份),这个在其他文章中已有详细描述,这里不再赘述。

代码如下:

ALTER INDEX [idx_temp_lock_id] ON [dbo].[temp_lock]

REBUILD PARTITION = ALL

WITH ( PAD_INDEX = OFF,

STATISTICS_NORECOMPUTE = OFF,

ALLOW_ROW_LOCKS = ON,

ALLOW_PAGE_LOCKS = ON,

ONLINE = OFF,

SORT_IN_TEMPDB = OFF )

更多信息请查看IT技术专栏

推荐信息