sqlserver数据库得管理及维护
sqlserver数据库得管理及维护
- sqlserver数据库得管理及维护
- 前言
- 一、手动备份及恢复
- 二、自动备份及定期清除备份集计划
- 三、数据库日志收缩
- 方法一:直接通过企业管理器收缩日志
- 方法二:分离数据库及日志文件
- 四、数据库索引碎片处理
- 五、常用SQL语句
前言
Microsoft公司推出的一种关系型数据库系统。SQL Server是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了与WindowsNT的有机结合,提供了基于事务的企业级信息管理系统方案。
1、高性能设计,可充分利用WindowsNT的优势。
2、系统管理先进,支持Windows图形化管理工具,支持本地和远程的系统管理和配置。
3、强壮的事务处理功能,采用各种方法保证数据的完整性。
4、持对称多处理器结构、存储过程、ODBC,并具有自主的SQL语言。 SQLServer以其内置的数据复制功能、强大的管理工具、与Internet的紧密集成和开放的系统结构为广大的用户、开发人员和系统集成商提供了一个出众的数据库平台。
一、手动备份及恢复
有备无患才是最安全得选择,即使天塌地陷,山崩地裂也无惧
打开SQL Server Management Studio
点击备份
还原数据库
二、自动备份及定期清除备份集计划
管理-右键维护计划
无报错说明配置无问题
设置每天执行,没有结束日期。
最后ctrl+s保存就好了
为防止数据文件过多占用磁盘空间,可以设置过去一周清除计划。
最后得结果就是这样得,最后不要忘记保存ctrl+s
三、数据库日志收缩
随着数据库使用时间增长,日志文件也在不停的增大,在此总结几个方法供参考,不管哪种方法,只要操作数据库就要注意先备份,以防万一。
方法一:直接通过企业管理器收缩日志
1、SQL Server Management Studio,数据库,使用数据库右键属性,选项,恢复模式,由完整更改为简单;
2、数据库右键,任务,收缩,文件,文件类型由数据更改为日志,点击确定进行日志收缩;
3、SQL Server Management Studio,数据库,使用数据库右键属性,选项,恢复模式,由简单更改为完整。
方法二:分离数据库及日志文件
分离数据库 企业管理器->服务器->数据库->右键->分离数据库
删除或剪切ldf.log文件
附加数据库 企业管理器->服务器->数据库->右键->附加数据库
四、数据库索引碎片处理
SQL Server Management Studio (SSMS)连接数据库以后,展开数据库,展开表的索引,右键某条索引属性可查看其碎片;索引碎片比例要求小于60%,若索引碎片大多超过90%,需要备份数据库之后重建整个数据库所有索引:索引右键重新生成或者执行重建索引存储过程。存储过程sql如下:
IF OBJECT_ID('REBUILD_ALL_INDEX_FOR_MSSQL') IS NOT NULL DROP PROC REBUILD_ALL_INDEX_FOR_MSSQL;goCREATE PROCEDURE [dbo].[REBUILD_ALL_INDEX_FOR_MSSQL]
ASDECLARE @tablename varchar(100);DECLARE @indexname varchar(300);
BEGINprint 'REBUILD_ALL_INDEX_FOR_MSSQL - 20190427.1'print 'Challenge Your Won, Challengy Won'print ' 'declare _table cursor for select name from sysobjects where xtype='U' order by nameOPEN _tablefetch next from _table into @tablenamewhile (@@fetch_status=0)begindeclare _index cursor for select i.name from sysindexes i JOIN sysobjects c ON i.id = c.id WHERE i.indid NOT IN ( 0, 255 ) and i.root is not null AND c.name = @tablename ORDER BY i.nameopen _indexfetch next from _index into @indexnamewhile (@@fetch_status=0)beginprint convert(varchar(20),getdate(),120)+' exec -> ALTER INDEX '+@indexname+' on '+@tablename+' REBUILD'exec('ALTER INDEX '+@indexname+' on '+@tablename+' REBUILD')print convert(varchar(20),getdate(),120)print ' 'fetch next from _index into @indexnameendclose _indexdeallocate _indexfetch next from _table into @tablenameendclose _tabledeallocate _table
ENDgoEXEC [dbo].[REBUILD_ALL_INDEX_FOR_MSSQL];go
五、常用SQL语句
按照表大小进行排序查询
SELECT A.NAME ,B.ROWS FROM sysobjects A JOIN sysindexes B ON A.id = B.id
WHERE A.xtype = 'U' AND B.indid IN(0,1) AND B.rows>0 ORDER BY B.ROWS DESC