sqlserver数据库得管理及维护
前言
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;
go
CREATE PROCEDURE [dbo].[REBUILD_ALL_INDEX_FOR_MSSQL]
AS
DECLARE @tablename varchar(100);
DECLARE @indexname varchar(300);
BEGIN
print '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 name
OPEN _table
fetch next from _table into @tablename
while (@@fetch_status=0)
begin
declare _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.name
open _index
fetch next from _index into @indexname
while (@@fetch_status=0)
begin
print 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 @indexname
end
close _index
deallocate _index
fetch next from _table into @tablename
end
close _table
deallocate _table
END
go
EXEC [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
|