sql2008清理日志
这个问题我前几天正好碰上,所以,相关的关键点告诉你
**********特别提示:《在操作之前请备份》************:
1、SQL SERVER 2008 的日志会越来越大,如果是用于生产的,可能会大到可怕,反正我的数据库,前几天一看,不到1个月就十多个G的日志文件。
2、要收缩、清除其实很简单,关键点就一个:先把数据库的恢复模式从默认的“完整”改为“简单”。具体做法:对数据库点 右键 -》属性-》左边 选择页 中 点 “选项”-》找到 “恢复模式”,改成“简单”。
3、然后对数据库点 右键 -》任务-》收缩 -》文件 -》出来的界面中,文件类型 选 “日志”,点“确定”钮-》OK了。
4、再次提示,在操作之前请备份,虽然我在操作中没有碰上任务问题,但不保证你不出问题。
5、至于日志文件缩完了,你是否要把它改回“完整”模式,你自个看着办,我是让它一直简单,因为,以我的技术,要真的数据库崩溃了,有日志问题也是“然并卵”,反正我是一天自动两次异盘备份,加每二小时增量备份,最后再加双机热备(用软件实现的,那个软件据说要卖几万一套,具体叫什么就不说了,省得别人说我打广告,呵呵)。
6、看了一下微软的数据库镜像实现方案相关的东西,感觉太难了,不靠谱,有兴趣你可以去试试。
7、最后,顺便说,数据库的恢复模式的选择,对当前数据库的运行应该是没有什么影响的,也许对于会用日志文件进行数据查看和调整的人有用。
‘贰’ 怎样清理或者删除MSSQL数据库日志文件
数据库的性能是DBA都需要重点关注的,日志文件的增多严重影响数据库的性能,本文将为您介绍SQLServer删除日志文件的方法,供您参考,希望对您有所帮助。
数据库在使用过程中会使日志文件不断增加,使得数据库的性能下降,并且占用大量的磁盘空间。SQL Server数据库都有log文件,log文件记录用户对数据库修改的操作。可以通过直接删除log文件和清空日志在清除数据库日志。
1、删除LOG
1.1 分离数据库
分离数据库之前一定要做好数据库的全备份,选择数据库——右键——任务——分离。
附加数据库之后将生成新的日志文件log,新的日志文件的大小事504K。
1.4 也可以通过命令才完成以上的操作
use master;
exec sp_detach_db @dbname='数据库名';
exec sp_attach_single_file_db @dbname='数据库名',@physname='D:Program FilesMicrosoft SQL ServerMSSQL10.SQL2008MSSQLDATATestDB.mdf'
Sp_detach_db:分离数据库;
sp_attach_single_file_db:附加单个数据库文件;在上述代码中只附加了数据文件,而未附加日志文件,言下之意就是删除了日志文件。
该命令在SQL Server 2005和2000支持,SQL Server 2008不支持该命令。
2. 清空日志
DUMP TRANSACTION 数据库名 WITH NO_LOG
3. 收缩数据库文件
DBCC SHRINKFILE ('TestDB_log',1)
SQL Server中“数据收缩”详解
4. 截断事务日志
BACKUP LOG TestDB WITH NO_LOG
该命令在SQL Server 2008也是不支持,在SQL Server 2005和2000可以使用。
‘叁’ 如何清空 SQL 服务器事务处理日志
这里的事务日志清理是指截断事务日志并释放空间。
操作方法:
1、通过备份事务日志进行截断
备份时的默认选项就是Truncate the transaction log(截断事务日志),备份完成后,事务日志就会自动被截断,但这时你查看日志文件的大小还是和原来一样。所以,需要通过第二步释放日志文件占用的空间。
2、通过收缩日志文件释放日志文件占用的空间
将恢复模式由完整(Full)改为简单(Simple)
收缩(Shrink)日志文件
将恢复模式由简单(Simple)改为完整(Full)
3、收缩数据库(Shrink database)
‘肆’ SQL SERVER2008 R2 求教,故障日志不断增大,撑爆
一、简单回答:
1、改你的SQL SERVER2008 R2中的工作数据库的模式为简单。(打开SQL的管理器,对相关数据库点右键,点 属性 -》选项-》“恢复模式”右边的下拉,改为“简单”)。
2、对相关数据库点右键,点“任务”-》“收缩”-》“文件”-》文件类型 那儿 改 日志,然后点“确定”。
3、如果需要每天让SQL SERVER2008 R2自个清理,请编写SQL的定时任务SQL Server代理 里的(作业)。关键语句:
DBCCSHRINKFILE(N'你的数据库的Log文件的名称',宏禅0,TRUNCATEONLY)
---------------------------------------------------------
4、特别提示,如果你的数据库需要高级别的安全,那就不要随意改动蔽颂尘“恢复模式”,或在收缩清理完日志后改回“恢复模式”为“完全”。在“完全”模式下,SQL SERVER2008 R2的日志文件无法被清理收缩。日志文件一但收缩,以前的日志记录就不在了,超级高手也无法对数据库中数据近期的改动进行分析。
二、相关知识:
1、SQL SERVER2008 R2没有故障日志,它有的只是日志,默认情况下,SQL SERVER2008 R2会记录数据库的所有变化到日志中。所以,请不说它是故障日志。
2、对于绝大多普通级别的数人来说,这个日志基本上没什么用。仅少数超级高手在特定情况下可以用这些日志还原早先的数据。比如数据库某个表被人恶意改动了,要找回到没有改动前的状态。特别说明,这樱缓只是理论上说可行,实际上,要视具体情况,因为不是你问的话题在这里就不进一步讨论。
‘伍’ sqlserver2008和sqlserver2012日志文件过大,有什么方法清理吗
清理sql server 2008日志步骤如下: 1.将数据库设置成 简单 模式 选择要收缩的数据库,点右键 属性->选项,选择 简单模式 2.选择任务->收缩->文件 3.选择日志 或者用如下语句 代码 USE [master] GO ALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE DNName SET RECOVERY SIMPLE GO USE DNName GO DBCC SHRINKFILE (N'LogFileName' , 0,TRUNCATEONLY) GO USE [master] GO ALTER DATABASE DNName SET RECOVERY FULL WITH NO_WAIT GO ALTER DATABASE DNName SET RECOVERY FULL GO SQL Server 2000要清理日志使用的是mp语句,但是在SQL Server2008里,这个语句不管用了,如果日志文件很大,比如超过1G,就需要截断一下日志文件以加快sqlserver的运行速度,在SQL Server2008里,方法改为: 有数据库 xxdb 在 SQL Server 2008 下,日志文件已经超过1G。 以往使用BACKUP语句-BACKUP LOG xxdb WITH NO_LOG 已经失效,在查阅 MSDN 之后发现 MS 提供的标准截断日志语句已经变为了 “BACKUP LOG 语句不指定 WITH COPY_ONLY” 使用语句 BACKUP LOG xxdb to disk='x:\work\1.bak' 成功将日志文件备份,并截断日志文件。这里x:代表你想要备份文件的盘符。 然后使用 DBCC SHRINKFILE (xxdb_log,10) 收缩日志文件到 10M 总结: 完整的收缩日志文件的 T-SQL 语句: BACKUP LOG xxdb to disk='x:\work\1.bak' DBCC SHRINKFILE (xxdb_log,10) GO -- BACKUP LOG <db_name> to disk=<'backupfilename'> DBCC SHRINKFILE (<log_filename>,10) GO 里面的x:\work是随意设置的。当然也可以收缩到比如5M或1M。 在用的: USE[master] GO _WAIT GO --简单模式 GO USEYHDB GO DBCCSHRINKFILE(N'YHDB_log', 11,TRUNCATEONLY) GO USE[master] GO _WAIT GO --还原为完全模式 GO
‘陆’ sql server 2008怎么清空日志
SQL Server 2008清空删除日志文件方法: 在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。 打个SQL查询分析器,在里面输入如下命令后执行即可: USE [master] GO ALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE DNName SET RECOVERY SIMPLE --简单模式 GO USE DNName GO DBCC SHRINKFILE (N'DNName_Log' , 11, TRUNCATEONLY) GO '这里的DNName_Log 如果不知道在sys.database_files里是什么名字的话,可以用以下注释的语句进行查询 'USE DNName 'GO 'SELECT file_id, nameFROM sys.database_files; 'GO USE [master] GO ALTER DATABASE DNName SET RECOVERY FULL WITH NO_WAIT GO ALTER DATABASE DNName SET RECOVERY FULL --还原为完全模式 GO