SQL2008收缩日志方法

合集下载

SQLServer数据库无法收缩问题

SQLServer数据库无法收缩问题

MS SQL Server数据库无法收缩的处理办法一. 数据库数据文件无法收缩的情况在MS SQL Server 2008中有一个叫做“张金玉”的数据库。

想把他收缩一下。

进入“SQL Server Management Studio”,使用“数据库”→“张金玉”鼠标右键菜单中的“任务”→“收缩”→“文件”菜单项,弹出一个“收缩文件”窗口,如下图。

在这个窗口中可以看到“当前分配的空间”为31236.00MB,“可用空间”为23341.81MB (74%)。

可以缩小很多。

选中窗口中的“在释放未使用的空间前重新组织页”单选按钮,并将那个“将文件收缩到”框框里面的值设为0(此处设为0在运行中会自动填入这个框框右边的最小值—7825)。

点击“确定”按钮,稍等片刻,这个窗口自动关闭,表示已经收缩完毕。

但是,再次打开这个窗口看看,“当前分配的空间”仍然是31236.00MB。

换句话说,这个数据库实际上并没有收缩。

换用其它的收缩方法,统统不能收缩。

鉴于此种情况,考虑数据库本身可能存在错误。

试用“DBCC CHECKDB”检查是否有误。

在“SQL Server Management Studio”中新建一个查询选项卡,先指定数据库名称为“张金玉”,然后执行“DBCC CHECKDB”。

执行期间服务器的硬盘灯常亮。

执行完毕后报告有错。

在报告开头附近就有两行红字如下:张金玉的DBCC 结果。

Service Broker 消息9675,状态1: 已分析的消息类型: 14。

Service Broker 消息9676,状态1: 已分析的服务约定: 6。

Service Broker 消息9667,状态1: 已分析的服务: 3。

Service Broker 消息9668,状态1: 已分析的服务队列: 3。

Service Broker 消息9669,状态1: 已分析的会话端点: 0。

Service Broker 消息9674,状态1: 已分析的会话组: 0。

数据库日志文件收缩文档

数据库日志文件收缩文档

数据库sqlserver 2005 日志文件压缩文档如何压缩SQL Server 2005指定数据库文件和日志的大小?下面有两个SQL语句可以达到在SQL Server 2005/2008压缩指定数据库文件和日志的大小的效果:1、DBCC SHRINKDATABASE (Transact-SQL)收缩指定数据库中的数据文件和日志文件的大小。

语法DBCC SHRINKDATABASE( 'database_name' | database_id | 0[ ,target_percent ][ , { NOTRUNCATE | TRUNCATEONLY } ])[ WITH NO_INFOMSGS ]参数'database_name' | database_id | 0 要收缩的数据库的名称或ID。

如果指定0,则使用当前数据库。

target_percent 数据库收缩后的数据库文件中所需的剩余可用空间百分比。

NOTRUNCATE 通过将已分配的页从文件末尾移动到文件前面的未分配页来压缩数据文件中的数据。

target_percent 是可选参数。

文件末尾的可用空间不会返回给操作系统,文件的物理大小也不会更改。

因此,指定NOTRUNCATE 时,数据库看起来未收缩。

NOTRUNCATE 只适用于数据文件。

日志文件不受影响。

TRUNCATEONLY 将文件末尾的所有可用空间释放给操作系统,但不在文件内部执行任何页移动。

数据文件只收缩到最近分配的区。

如果与TRUNCATEONLY 一起指定,将忽略target_percent。

TRUNCATEONLY 只适用于数据文件。

日志文件不受影响。

WITH NO_INFOMSGS 取消严重级别从0 到10 的所有信息性消息。

备注若要收缩特定数据库的所有数据和日志文件,请执行DBCC SHRINKDATABASE 命令。

若要一次收缩一个特定数据库中的一个数据或日志文件,请执行DBCC SHRINKFILE 命令。

SQL Server 2008 R2 日志收缩处理方法

SQL Server 2008 R2 日志收缩处理方法

SQL Server 2008 R2 日志收缩数据库日志文件收缩方法一:1、将数据库恢复模式改为简单模式,右击数据库选择属性,弹出窗口如下图,选择“选项”,将“恢复模式”改为“简单”。

2、右击数据库如下图选择,打开“收缩文件”窗口3、收缩文件窗口如下图,“文件类型”选择“日志”,单击“确定”完成日志收缩。

数据库日志文件收缩方法二:在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。

SQL代码如下(用指定数据库名替换DNName):USE MASTERGOALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE DNName SET RECOVERY SIMPLE--简单模式GOUSE DNNameGODBCC SHRINKFILE (N'DNName_Log',11, TRUNCA TEONL Y)GOUSE MASTERGOALTER DATABASE DNName SET RECOVERY FULL WITH NO_W AITGOALTER DATABASE DNName SET RECOVERY FULL--还原为完全模式GO优点:此清除日志所运行消耗的时间短,90GB的日志在分钟左右即可清除完毕,做完之后做个完全备份在分钟内即可完成。

缺点:不过此动作最好不要经常使用,因为它的运行会带来系统碎片。

普通状态下LOG 和DIFF的备份即可截断日志。

此语句使用的恰当环境:当系统的日志文件异常增大或者备份LOG时间太长可能影响系统的情况下使用。

数据库日志文件收缩方法三:通过分离数据库,然后再删除事务日志文件,再附加mdf数据文件,也可以达到某种意义上的事务日志收缩。

总结:建议资讯同事用方法一来收缩日志,另外需求把日志文件增长方式按如下图来设置,将日志文件选择按MB来增长(目前正式账套F22X库已经设置OK);。

SQLServer2008日志文件无法收缩处理方法

SQLServer2008日志文件无法收缩处理方法

SQL Server 2008 事务日志物理文件尺寸无法减小的解决办法(含日志收缩(shrink)技巧)作者:宋林发现有的数据库日志文件太大,无论如何收缩执行几次SQL语句都不行。

事务日志达30+G,而且使用常规的截断、收缩方法均无法减小日志物理文件的尺寸,经过一番寻找,终于找到了解决方法。

查看日志信息在查询分析器中执行如下代码来查看日志信息:DBCC LOGINFO('数据库名称')我们看到status=0的日志,代表已经备份到磁盘的日志文件;而status=2的日志还没有备份。

当我们收缩日志文件时,收缩掉的空间其实就是status=0的空间,如果日志物理文件无法减小,这里一定能看到非常多status=2的记录。

接下来分析为什么会有这么多status=2的记录查看日志截断延迟原因活跃(active)的日志无法通过收缩来截断,有各种原因会使日志截断延迟,具体表现就是事务日志的物理文件无法通过截断、收缩来减小,通过下面的代码可以看到实例上每个数据库的日志截断延迟原因:1USE[master]2SELECT[name] ,[database_id] ,[log_reuse_wait] ,[log_reuse_w ait_desc]FROM[sys].[databases]各种原因及解释如下:针对延迟日志截断原因的部分解决方案∙LOG_BACKUP备份日志后再执行收缩即可backup log [database] with nolog ∙REPLICATION这是我遇到的情况,但我根本没有启用过REPLICATION,据查,这好像是SQLSERVER2008的一个BUG,解决方法是给标有“REPLICATION”的数据库任意一个表创建数据库事务复制(TRANSACTION REPLICATION),然后再删除,执行数据库与日志备份后,就可以收缩了。

∙收缩日志小技巧∙一般收缩日志的代码中都要求指定日志的文件名称,下面的代码则可以自动获取日志文件名称:∙1USE[数据库名称]2DECLARE@LogFileLogicalName sysname3SELECT@LogFileLogicalName=Name FROM sys.database_files WHERE Type=14PRINT@LogFileLogicalName5DBCC SHRINKFILE (@LogFileLogicalName, 1);然后再收缩数据库DBCC SHRINKDATABASE(库名)。

集群数据库 收缩日志

集群数据库 收缩日志

集群数据库收缩日志
收缩日志是指在集群数据库中对日志文件进行整理和压缩,以释放空间并提高性能。

在集群数据库中,日志文件记录了数据库的操作和变化,随着时间的推移,日志文件可能会变得庞大,占用大量存储空间,影响数据库性能。

因此,收缩日志是一种管理和优化数据库的重要操作。

从技术角度来看,收缩日志可以通过数据库管理系统提供的特定命令或工具来实现。

在SQL Server中,可以使用DBCC SHRINKFILE命令来收缩日志文件,而在Oracle数据库中,可以使用ALTER DATABASE命令来收缩日志文件。

这些命令通常会重新组织日志文件的物理存储结构,删除不再需要的空间,并将文件大小缩小到合适的水平。

另外,收缩日志也需要考虑到数据库的运行状态和业务需求。

在执行收缩日志操作之前,需要确保数据库没有活动的事务或长时间运行的查询,以免影响数据库的正常运行。

此外,还需要评估数据库的日志使用情况和备份策略,以确定何时以及如何执行收缩日志操作,以避免对数据库的正常运行和数据完整性造成影响。

在实际操作中,收缩日志也需要注意一些潜在的风险和注意事项。

过于频繁地收缩日志可能会导致日志文件的不断增长和碎片化,影响数据库性能。

因此,需要根据实际情况和最佳实践来制定合适
的收缩日志策略,以保证数据库的稳定和高效运行。

综上所述,收缩日志是集群数据库管理中的重要操作,通过合
理的技术手段和策略,可以有效地管理和优化数据库的日志文件,
提高数据库性能和稳定性。

sql数据库如何定期收缩日志文件大小

sql数据库如何定期收缩日志文件大小

sql数据库如何定期收缩日志文件大小--用作业就行了嘛:企业管理器--管理--SQL Server代理--右键作业--新建作业-- "常规"项中输入作业名称-- "步骤"项--新建-- "步骤名"中输入步骤名-- "类型"中选择"Transact-SQL 脚本(TSQL) "-- "数据库"选择执行命令的数据库-- "命令"中输入日志收缩的语句:DUMP TRANSACTION 库名WITH NO_LOG截断事务日志BACKUP LOG 数据库名WITH NO_LOG收缩数据库DBCC SHRINKDATABASE(数据库名)--确定-- "调度"项--新建调度-- "名称"中输入调度名称-- "调度类型"中选择你的作业执行安排--如果选择"反复出现"--点"更改"来设置你的时间安排然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行/*--特别注意请按步骤进行,未进行前面的步骤,请不要做后面的步骤否则可能损坏你的数据库.一般不建议做第4,6两步第4步不安全,有可能损坏数据库或丢失数据第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.--*/--下面的所有库名都指你要处理的数据库的库名1.清空日志DUMP TRANSACTION 库名WITH NO_LOG2.截断事务日志:BACKUP LOG 库名WITH NO_LOG3.收缩数据库文件(如果不压缩,数据库的文件不会减小企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了也可以用SQL语句来完成--收缩数据库DBCC SHRINKDATABASE(库名)--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles DBCC SHRINKFILE(1)4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)a.分离数据库:企业管理器--服务器--数据库--右键--分离数据库b.在我的电脑中删除LOG文件c.附加数据库:企业管理器--服务器--数据库--右键--附加数据库此法将生成新的LOG,大小只有500多K或用代码:下面的示例分离pubs,然后将pubs 中的一个文件附加到当前服务器。

SQLSERVER2008代码折叠小技巧

SQLSERVER2008代码折叠⼩技巧最近在整理公司⼀个项⽬数据库的初始化数据脚本,整个脚本数据量挺⼤,很多的表都有初始化数据,INSERT的脚本⼤概有⼏千⾏,翻来翻去查找的时候就特别不⽅便,但是SQL本⾝的代码折叠处不是⾃⼰想要的折叠,后来突然发现其实只要在每⼀处想折叠地⽅前后加⼀个“GO”,SQL就会⾃动把折叠的加号改到⾃⼰想要的位置,实例如下:View Code1/*SQL代码折叠测试脚本*/234--测试15INSERT INTO TempTable VALUES('1','2','3')6INSERT INTO TempTable VALUES('1','2','3')7INSERT INTO TempTable VALUES('1','2','3')8GO910--测试211INSERT INTO TempTable VALUES('1','2','3')12INSERT INTO TempTable VALUES('1','2','3')13INSERT INTO TempTable VALUES('1','2','3')14GO1516--测试317INSERT INTO TempTable VALUES('1','2','3')18INSERT INTO TempTable VALUES('1','2','3')19INSERT INTO TempTable VALUES('1','2','3')2021--测试422INSERT INTO TempTable VALUES('1','2','3')23INSERT INTO TempTable VALUES('1','2','3')24INSERT INTO TempTable VALUES('1','2','3')25GO2627--测试528INSERT INTO TempTable VALUES('1','2','3')29INSERT INTO TempTable VALUES('1','2','3')30INSERT INTO TempTable VALUES('1','2','3')3132--测试633INSERT INTO TempTable VALUES('1','2','3')34INSERT INTO TempTable VALUES('1','2','3')35INSERT INTO TempTable VALUES('1','2','3')3637--测试738INSERT INTO TempTable VALUES('1','2','3')39INSERT INTO TempTable VALUES('1','2','3')40INSERT INTO TempTable VALUES('1','2','3')4142--测试843INSERT INTO TempTable VALUES('1','2','3')44INSERT INTO TempTable VALUES('1','2','3')45INSERT INTO TempTable VALUES('1','2','3')。

SQL数据库文件超级大而且增长速度过快的解决办法

SQL 数据库文件‎超级大,而且增长速‎度过快!(2008-09-05 13:50:29)目前一客户‎的数据库文‎件(.MDF)占用空间超‎过有48G‎,切增长速度‎很快。

已经对日志‎文件进行了‎压缩。

在查询分析‎器中用 exec sp_sp‎aceus‎ed语句进行查‎询,输出结果如‎下:(头疼的问题‎)datab‎ase_n‎ame datab‎ase_s‎ize unall‎ocate‎d_spa ‎ceNSMIS‎ 48770‎.00M 1370.97 MBreser‎ved data index‎_size‎ unuse‎ d 48504‎160 KB 70172‎72 KB 27077‎ 6 KB 41216‎112 KB--------------------------------------------------------------------------------------1、用BACK‎UP LOG datab‎ase WITH NO_LO‎G清除日志‎把数据库属‎性中的故障‎还原模型改‎为“简单”可以大大减‎慢日志增长‎的速度。

如果把还原‎模型调到简‎单,这样就不支‎持时间点还‎原了,但是日志文‎件会很小,如果数据比‎较重要推荐‎还是把数据‎库的还原模‎型调为完全‎用BACK‎UP LOG datab‎ase WITH NO_LO‎G命名后,会截断不活‎动日志,不减小物理‎日志文件的‎大小,但逻辑日志‎会减小,收缩数据库‎后会把不活‎动虚拟日志‎删除来释放‎空间,不会损坏数‎据。

如果日志被‎截断并收缩‎数据库后,就不能直接‎用最近的一‎个全库备份‎做时间点还‎原,建议立即备‎份数据库,以防万一。

2、sql serve‎r运行中,是否能删除‎主数据库事‎务日志文件‎步骤如下:(1)、分离数据库‎企业管理器‎--数据库--右击你要删‎除日志的数‎据库--所有任务--分离数据库‎(2)、然后删除日‎志文件(3)、然后再附加‎数据库企业管理器‎--数据库--右击数据库‎--所有任务--附加数据库‎这时候只附‎加。

SQL解决数据库日志文件已满的问题

2、删除日志文件 分离数据库:
删除数据库日志文件 附加数据库时,出现找不到日志字样,删除数据库日志文件 点击保存,成功!
Hale Waihona Puke 数据库属性选项恢复模式由完成切换成简单在收缩完成之后记得改回完整模式
SQL解 决 数 据 库 日 志 文 件 已 满 的 问 题
出现数据库操作失败,查找原因,发现数据库日志已满:
解决此问题有两种方法: 1、压缩日志文件 1.数据库->属性->选项-恢复模式->由完成切换成简单(在收缩完成之后记得改回完整模式) 2.数据库->任务->收缩-文件->文件类型->日志->将文件收缩到

MS SQL Server 2008 R2(简体中文版)日志收缩详解

MS SQL Server 2008 R2(简体中文版)
日志收缩详解
1、右击要收缩的数据库,选择“属性”,如下图所示。

2、在弹出的窗口左侧“选择页”中点击“选项”,在右侧选择“恢复模式”值为“简单”,点击“确定”按钮,如下图所示。

3、右击数据库,选择“任务”-“收缩”-“文件”,如下图所示:
4、在“收缩文件”对话框中,选择“文件类型”值为“日志”,在收缩操作中选择“在释放未使用的空间前重新组织页”,将文件收缩到指定大小,单击“确定”按钮,完成日志收缩。

5、右击数据库,选择“属性”,在弹出的窗口左侧“选择页”中点击“选项”,在右侧选择“恢复模式”值为“完整”,点击“确定”按钮即可。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

说明:由于SQL2008对文件和日志管理进行了优化,所以截断日志语句dump transaction DBName(数据库名字) with no_log在SQL2005中可以运行但在SQL2008中已经被取消。

下边是SQL2008收缩数据库日志方法。

一.查看数据库日志大小
二.打开数据库SQL2008软件,点击“新建查询”。

1.输入下边的语句
USE [master]
GO
ALTER DA TABASE [DYCommonDataBase20] SET RECOVERY SIMPLE WITH
NO_WAIT
GO
ALTER DA TABASE [DYCommonDataBase20] SET RECOVERY SIMPLE
GO
USE [DYCommonDataBase20]
GO
DBCC SHRINKFILE (N' DYCommonDataBase20_log' , 1, TRUNCA TEONLY)
GO
USE [master]
GO
ALTER DA TABASE [DYCommonDataBase20] SET RECOVERY FULL WITH
NO_WAIT
GO
ALTER DA TABASE [DYCommonDataBase20] SET RECOVERY FULL
GO
(注意:红色部分需要根据实际情况进行修改)
2.点击“分析”按钮
3.当下边“出现命令已经完成”,再点击“执行”按钮
三.再次查看相应数据库日志文件,查看是否成功收缩
四.右键你要压缩的数据库--属性--选项--右边“自动收缩”--改为“TRUE”,这样就不会变大了。

相关文档
最新文档