SQL数据库日志已满解决方法

58次阅读
没有评论

共计 2360 个字符,预计需要花费 6 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 SQL 数据库日志已满解决方法,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

当前的解决方法是:把硬盘上的其他文件删除,以空出硬盘空间,将数据库的日志文件大小改成无限制,然后分离数据库,要确保分离成功,、然后把数据库日志文件删除(最好是先改名,以防万一)。再附加数据库,这样会重建日志文件。加回去之后,将数据库改成自动收缩,把日志文件改成按 mb 增长,增长最大设为一个固定的值,值的大小看数据处理情况,存在大指的 update 操作的话,应设为大一点。 

在查询分析器上操作: 

清空日志 DUMP TRANSACTION 库名 WITH NO_LOG 截断事务日志:BACKUP LOG 数据库名 WITH NO_LOG 解决 SQL 数据库日志已满的问题  

1、右键数据库→属性→选项→故障还原模型→设为简单→确定; 

2、右键数据库→所有任务→收缩数据库→确定; 

3、右键数据库→属性→选项→故障还原模型→设为大容量日志记录→确定。 

二、复杂方法  

1、清空日志 DUMP TRANSACTION 库名 WITH NO_LOG 

2、截断事务日志 BACKUP LOG 数据库名 WITH NO_LOG 

3、收缩数据库文件 (如果不压缩, 数据库的文件不会减小) 企业管理器 – 右键你要压缩的数据库 – 所有任务 – 收缩数据库 – 收缩文件 – 选择日志文件 – 在收缩方式里选择收缩至 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 中的一个文件附加到当前服务器。a. 分离 EXEC sp_detach_db @dbname = pubs b. 删除日志文件 c. 再附加 EXEC sp_attach_single_file_db @dbname = pubs ,@physname = c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf  

5、为了以后能自动收缩, 做如下设置 企业管理器 – 服务器 – 右键数据库 – 属性 – 选项 – 选择 自动收缩 –SQL 语句设置方式: EXEC sp_dboption 数据库名 , autoshrink , TRUE  

6、如果想以后不让它日志增长得太大 企业管理器 – 服务器 – 右键数据库 – 属性 – 事务日志 – 将文件增长限制为 xM(x 是你允许的最大数据文件大小) –SQL 语句的设置方式: alter database 数据库名 modify file(name= 逻辑文件名,maxsize=20) 特别注意:请按步骤进行, 未进行前面的步骤, 请不要做后面的步骤,否则可能损坏你的数据库。一般不建议做第 4、6 两步,第 4 步不安全, 有可能损坏数据库或丢失数据,第 6 步如果日志达到上限, 则以后的数据库处理会失败, 在清理日志后才能恢复。

日志文件满而造成 SQL 数据库无法写入文件时,可用两种方法:

一种方法:清空日志。

1.打开查询分析器,输入命令 DUMP TRANSACTION 数据库名 WITH NO_LOG

2. 再打开企业管理器 – 右键你要压缩的数据库 – 所有任务 – 收缩数据库 – 收缩文件 – 选择日志文件 – 在收缩方式里选择收缩至 XXM, 这里会给出一个允许收缩到的最小 M 数, 直接输入这个数, 确定就可以了。

另一种方法有一定的风险性,因为 SQL SERVER 的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。

1: 删除 LOG 分离数据库 企业管理器->服务器->数据库->右键->分离数据库

2:删除 LOG 文件 附加数据库 企业管理器->服务器->数据库->右键->附加数据库 此法生成新的 LOG,大小只有 500 多 K。

注意:建议使用第一种方法。

如果以后, 不想要它变大。

SQL2000 下使用:

在数据库上点右键 - 属性 - 选项 - 故障恢复 - 模型 - 选择 - 简单模型。

或用 SQL 语句:alter database 数据库名 set recovery simple

另外,Truncate log on checkpoint(此选项用于 SQL7.0,SQL 2000 中即故障恢复模型选择为简单模型) 当执行 CHECKPOINT 命令时如果事务日志文件超过其大小的 70% 则将其内容清除在开发数据库时时常将此选项设置为 True Auto shrink 定期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的 25% 时,系统将会自动缩减文件使其未用空间等于 25% 当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将 Truncate log on checkpoint 选项设为 True 时才能进行。

注意:一般立成建立的数据库默认属性已设好,但碰到意外情况使数据库属性被更改,请用户清空日志后,检查数据库的以上属性,以防事务日志再次充满。

关于 SQL 数据库日志已满解决方法就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-28发表,共计2360字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)