sql数据库收缩日志脚本
关于SQLServer压缩日志及数据库文件大小整理
让知识带有温度。
关于SQLServer压缩日志及数据库文件大小整理
关于SQL Server压缩日志及数据库文件大小
请按步骤进行,未进行前面的步骤时,请不要做后面的步骤,以免损坏你的数据库.
一般不建议做第4,6两步,第4步担心全,有可能损坏数据库或丢失数据。
第6步假如日志达到上限,则以后的数据库处理睬失败,在清理日志后才能恢复。
1.清空日志
DUMP TRANSACTION 库名WITH NO_LOG
2.截断事务日志
BACKUP LOG 数据库名WITH NO_LOG
3.收缩数据库文件(假如不压缩,数据库的'文件不会减小
企业管理器--右键你要压缩的数据库--全部任务--收缩数据库--收缩文件
--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
也可以用SQL语句来完成
第1页/共2页
千里之行,始于足下。
--收缩数据库
DBCC SHRINKDATABASE(客户资料)
--收缩指定数据文件,1是文件号,可以通过这个语句查询到:
select * from sysfiles
DBCC SHRINKFILE(1)
4.为了最大化的缩小日志文件(假如是sql 7.0,这步只能在查询分析器中进行)
a.分别数据库:
企业管理器--服务器--数据库--右键--分别数据库
b.在我的电脑中删除LOG文件
文档内容到此结束,欢迎大家下载、修改、丰富并分享给更多有需要的人。
第2页/共2页。
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日志文件无法收缩处理方法
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 压缩数据库方法
sql server 压缩数据库方法在SQL Server 中,可以使用几种方法来压缩数据库。
以下是其中一些方法:1. 使用 T-SQL 脚本:可以使用 T-SQL 脚本来压缩数据库。
例如,使用 `ALTER DATABASE` 语句和 `REBUILD_LOG` 或 `REBUILD_FILE` 子句来压缩数据库日志和文件。
```sql-- 压缩日志文件ALTER DATABASE [YourDatabaseName]REBUILD_LOG;-- 压缩数据文件ALTER DATABASE [YourDatabaseName]REBUILD_FILE (N'LogicalFileName', N'NewFileName', 1);```2. 使用 SQL Server Management Studio (SSMS):在 SQL Server Management Studio 中,你可以右击数据库 -> 任务 -> 收缩 -> 文件或文件组。
这将打开一个对话框,你可以选择收缩数据库的方法和设置。
3. 使用 ALTER DATABASE 语句:你可以使用 ALTER DATABASE 语句来设置数据库的自动收缩选项。
例如:```sqlALTER DATABASE [YourDatabaseName]SET AUTO_SHRINK ON;```请注意,自动收缩通常不是一个好的做法,因为它可能会影响性能并导致大量的日志操作。
4. 使用第三方工具:市场上有很多第三方工具,如 Redgate's SQL Compact,可以帮助你更有效地压缩数据库。
这些工具通常提供更高级的压缩选项和更好的性能。
5. 优化数据库设计:在某些情况下,压缩数据库可能不是一个解决方案。
例如,如果数据库太大,可能需要重新考虑数据库设计,例如通过规范化、反规范化、分区或使用其他技术来减少数据库的大小。
集群数据库 收缩日志
集群数据库收缩日志
收缩日志是指在集群数据库中对日志文件进行整理和压缩,以释放空间并提高性能。
在集群数据库中,日志文件记录了数据库的操作和变化,随着时间的推移,日志文件可能会变得庞大,占用大量存储空间,影响数据库性能。
因此,收缩日志是一种管理和优化数据库的重要操作。
从技术角度来看,收缩日志可以通过数据库管理系统提供的特定命令或工具来实现。
在SQL Server中,可以使用DBCC SHRINKFILE命令来收缩日志文件,而在Oracle数据库中,可以使用ALTER DATABASE命令来收缩日志文件。
这些命令通常会重新组织日志文件的物理存储结构,删除不再需要的空间,并将文件大小缩小到合适的水平。
另外,收缩日志也需要考虑到数据库的运行状态和业务需求。
在执行收缩日志操作之前,需要确保数据库没有活动的事务或长时间运行的查询,以免影响数据库的正常运行。
此外,还需要评估数据库的日志使用情况和备份策略,以确定何时以及如何执行收缩日志操作,以避免对数据库的正常运行和数据完整性造成影响。
在实际操作中,收缩日志也需要注意一些潜在的风险和注意事项。
过于频繁地收缩日志可能会导致日志文件的不断增长和碎片化,影响数据库性能。
因此,需要根据实际情况和最佳实践来制定合适
的收缩日志策略,以保证数据库的稳定和高效运行。
综上所述,收缩日志是集群数据库管理中的重要操作,通过合
理的技术手段和策略,可以有效地管理和优化数据库的日志文件,
提高数据库性能和稳定性。
sqlserver数据库收缩步骤
sqlserver数据库收缩步骤数据库收缩是一种优化数据库性能和空间利用的操作,它通过重新组织数据文件和索引,从而减少磁盘空间的使用,提高查询和存储性能。
以下是SQL Server数据库收缩的一般步骤。
步骤1:备份数据库在进行任何数据库操作之前,备份数据库是一个必要的安全措施,以防止数据丢失或操作错误导致的问题。
使用SQL Server Management Studio(SSMS)或命令行工具(如SQLCMD或PowerShell)执行完整数据库备份。
步骤2:索引分析在收缩数据库之前,需要对数据库进行索引分析,以确定是否存在不必要的或重复的索引。
可以使用SQL Server Management Studio的“索引优化向导”或自定义查询来执行索引分析。
步骤3:重建和重新组织索引根据索引分析的结果,可以选择重建或重新组织索引。
重建索引将需要更多的时间和磁盘空间,但可以最大程度地提高查询性能。
重新组织索引需要较少的时间和磁盘空间,但性能提升的效果较弱。
使用以下命令执行索引重建:```sqlALTERINDEX[索引名]ON[表名]REBUILD```使用以下命令执行索引重新组织:```sqlALTERINDEX[索引名]ON[表名]REORGANIZE```步骤4:收缩数据库文件对于在线进行的数据库,可以使用以下命令来缩小数据库文件:```sqlDBCCSHRINKDATABASE([数据库名])```对于离线的数据库,可以使用以下命令来缩小数据库文件:```sqlDBCCSHRINKFILE([数据库文件名])```收缩数据库文件可能需要一段时间,具体取决于数据库的大小和硬件性能。
在收缩数据库文件之前,可以使用以下命令来查看文件的当前大小:```sqlSELECT name, size/128.0 AS CurrentSizeMBFROM sys.database_files;```步骤5:重新索引在完成数据库文件的收缩后,由于数据文件的重新组织和索引重建,索引可能会变得非常稀疏。
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 中的一个文件附加到当前服务器。
Sqlserver推荐参数配置及日志收缩问题
Sqlserver推荐参数配置及⽇志收缩问题最近不定期有项⽬反馈周期性的系统整体性能下降情况,经分析存在因数据库环境、参数配置不佳造成的。
⽐如,sqlserver⽇志⽂件缺省按百分⽐增长,当⽇志⽂件已经⽐较⼤时,每次扩展时耗时较长,系统整体卡顿;另外,如果没有专门做⽇志备份,收缩⽇志和数据库时不会显著的降低⽇志⼤⼩,造成每次完整备份很⼤、备份时间很长,等等。
推荐配置简单整理⼀些⽐较基础、通⽤的配置如下:1. 建议的sqlserver版本(x64):sqlserver 2008 或更⾼版本2. 最⼩内存和最⼤内存统⼀设置为物理内存的80%3. 数据和⽇志⽂件的初始⼤⼩分别设置为10G和2G,均设置为按照固定200M⼤⼩增长,不限制最⼤值;4. Tempdb数据库的恢复模式设置为简单,数据和⽇志⽂件的初始⼤⼩分别设置为2G和1G,均设置为按照固定200M⼤⼩增长,不限制最⼤值;5. Tempdb的数据⽂件个数 = 数据库服务器的CPU数,所有数据⽂件的初始⼤⼩和增量必须⼀致,数据⽂件个数不要超过4个;6. 最⼤并⾏度设置为1,或并⾏的开销阀值设置为100(酌情设置)7. 数据库的完整备份后,应该再做⼀个⽇志备份,然后再做⽇志收缩。
⽇志收缩正常情况下,完成完整备份后,应该执⾏⽇志备份,然后再做⽇志⽂件的收缩。
只有做⽇志备份后记录才会被截断,仅做完整备份或差异备份,做⽇志收缩是没有效果的。
操作步骤如下:USE[master]GOBACKUP DATABASE[DbName]TO DISK='xxx'GOBACKUP LOG[DbName]TO DISK='xxx'GOUSE[DbName]GO-- 确定数据库⽇志⽂件的逻辑名称,收缩⽇志⽂件DECLARE@logName NVARCHAR(100);SELECT@logName= name FROM sys.database_files WHERE type_desc ='LOG'; --Type = 1DBCC SHRINKFILE (@logName, 1024);GO如果不备份⽇志,直接截断⽇志(不推荐使⽤),有以下两种变通⽅式:1. 将⽇志写⼊nul虚拟⽂件(对 SQL Server⽽⾔,nul 与其他真实存在的⽂件⼀样, SQL SERVER会扫描所有活动⽇志,将该⽇志格式化后写⼊ nul⽂件)2. 将数据库改为简单恢复模式后⼜改为完整恢复模式SQL2005 的WITH TRUNCATE_ONLY选项,起到相同的效果。
SQL解决数据库日志文件已满的问题
删除数据库日志文件 附加数据库时,出现找不到日志字样,删除数据库日志文件 点击保存,成功!
Hale Waihona Puke 数据库属性选项恢复模式由完成切换成简单在收缩完成之后记得改回完整模式
SQL解 决 数 据 库 日 志 文 件 已 满 的 问 题
出现数据库操作失败,查找原因,发现数据库日志已满:
解决此问题有两种方法: 1、压缩日志文件 1.数据库->属性->选项-恢复模式->由完成切换成简单(在收缩完成之后记得改回完整模式) 2.数据库->任务->收缩-文件->文件类型->日志->将文件收缩到
SQL SERVER 收缩数据库的命令
SQL SERVER 收缩数据库的命令1.清空日志DUMP T RANSACTION库名WIT H NO_LOG2.截断事务日志:BACKUP LOG数据库名WITH NO_LOG3.收缩数据库文件(如果不压缩,数据库的文件不会减小企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了也可以用SQL语句来完成--收缩数据库DBCC SHRINKDATABASE(客户资料)--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfilesDBCC SHRINKFILE(1)4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)a.分离数据库:企业管理器--服务器--数据库--右键--分离数据库b.在我的电脑中删除LOG文件c.附加数据库:企业管理器--服务器--数据库--右键--附加数据库此法将生成新的LOG,大小只有500多K或用代码:下面的示例分离pubs,然后将pubs 中的一个文件附加到当前服务器。
a.分离E X E C sp_detach_db @dbname='pubs'b.删除日志文件c.再附加E X E C sp_attach_single_file_db @dbname='pubs',@physname='c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.m df'5.为了以后能自动收缩,做如下设置:企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"--SQL语句设置方式:E X E C sp_dboption '数据库名', 'autoshrink', 'T RUE'6.如果想以后不让它日志增长得太大企业管理器--服务器--右键数据库--属性--事务日志--将文件增长限制为xM(x是你允许的最大数据文件大小)--SQL语句的设置方式:alter database数据库名modify file(nam e=逻辑文件名,maxsize=20)特别注意:请按步骤进行,未进行前面的步骤,请不要做后面的步骤否则可能损坏你的数据库.一般不建议做第4,6两步第4步不安全,有可能损坏数据库或丢失数据第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.另外提供一种更简单的方法,本人屡试不爽,建议大家使用。
