查看告警信息发现在前日数据库发生以下的告警:
The log file for database 'DB_IP' is full. Back up the transaction log for the database to free up some log space..
错误消息:
Error: 9002, Severity: 17, State: 2
该告警信息持续了2分中,在这两分中里,数据插入失败。两分后没有产生告警,数据库也恢复正常 (目前为止也是正常的)而且日志文件空间(包括硬盘)都有空闲。
没有限制事务日志的尺寸大小
不知道这个错误是怎么产生的,请各位高手指点!!
6 个解决方案
#1
日志已滿,你可以壓縮或清空,可事先要保証數據的安全性
清空log文件
1: 删除LOG
1:分离数据库 企业管理器->服务器->数据库->右键->分离数据库
2:删除LOG文件
3:附加数据库 企业管理器->服务器->数据库->右键->附加数据库
此法生成新的LOG,大小只有500多K
再将此数据库设置自动收缩
或用代码:
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。
EXEC sp_detach_db @dbname = 'pubs'
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
2:清空日志
DUMP TRANSACTION 库名 WITH NO_LOG
再:
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
3: 如果想以后不让它增长
企业管理器->服务器->数据库->属性->事务日志->将文件增长限制为2M
自动收缩日志,也可以用下面这条语句
ALTER DATABASE 数据库名
SET AUTO_SHRINK ON
故障还原模型改为简单,用语句是
USE MASTER
GO
ALTER DATABASE 数据库名 SET RECOVERY SIMPLE
GO
清空log文件
1: 删除LOG
1:分离数据库 企业管理器->服务器->数据库->右键->分离数据库
2:删除LOG文件
3:附加数据库 企业管理器->服务器->数据库->右键->附加数据库
此法生成新的LOG,大小只有500多K
再将此数据库设置自动收缩
或用代码:
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。
EXEC sp_detach_db @dbname = 'pubs'
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
2:清空日志
DUMP TRANSACTION 库名 WITH NO_LOG
再:
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
3: 如果想以后不让它增长
企业管理器->服务器->数据库->属性->事务日志->将文件增长限制为2M
自动收缩日志,也可以用下面这条语句
ALTER DATABASE 数据库名
SET AUTO_SHRINK ON
故障还原模型改为简单,用语句是
USE MASTER
GO
ALTER DATABASE 数据库名 SET RECOVERY SIMPLE
GO
#2
当初我也是怀疑日志满
可我查了一下,发现并没有限制事务日志的尺寸大小,而是让它自动增长的,硬盘上也有应该有30个G的空闲,我才判断不了到底是哪里的问题
可我查了一下,发现并没有限制事务日志的尺寸大小,而是让它自动增长的,硬盘上也有应该有30个G的空闲,我才判断不了到底是哪里的问题
#3
奇怪,怎麼報:The log file for database 'DB_IP' is full.
幫你頂上去,希望有高手幫忙。
幫你頂上去,希望有高手幫忙。
#4
查看日志文件是否是只读的,如果不是,可以先将数据库分离,删除‘dp_ID_log.ldf',然后将dp_id_data.mdf文件附加上去。
#5
cqdj(cqdj)
不是很明白哦,日志文件为什么要设成只读啊,能说的详细些吗
不是很明白哦,日志文件为什么要设成只读啊,能说的详细些吗
#6
呵呵 估计你执行了对对日志文件增长较快的操作,当时你的数据库日志的是不是比较小的说?
#1
日志已滿,你可以壓縮或清空,可事先要保証數據的安全性
清空log文件
1: 删除LOG
1:分离数据库 企业管理器->服务器->数据库->右键->分离数据库
2:删除LOG文件
3:附加数据库 企业管理器->服务器->数据库->右键->附加数据库
此法生成新的LOG,大小只有500多K
再将此数据库设置自动收缩
或用代码:
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。
EXEC sp_detach_db @dbname = 'pubs'
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
2:清空日志
DUMP TRANSACTION 库名 WITH NO_LOG
再:
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
3: 如果想以后不让它增长
企业管理器->服务器->数据库->属性->事务日志->将文件增长限制为2M
自动收缩日志,也可以用下面这条语句
ALTER DATABASE 数据库名
SET AUTO_SHRINK ON
故障还原模型改为简单,用语句是
USE MASTER
GO
ALTER DATABASE 数据库名 SET RECOVERY SIMPLE
GO
清空log文件
1: 删除LOG
1:分离数据库 企业管理器->服务器->数据库->右键->分离数据库
2:删除LOG文件
3:附加数据库 企业管理器->服务器->数据库->右键->附加数据库
此法生成新的LOG,大小只有500多K
再将此数据库设置自动收缩
或用代码:
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。
EXEC sp_detach_db @dbname = 'pubs'
EXEC sp_attach_single_file_db @dbname = 'pubs',
@physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'
2:清空日志
DUMP TRANSACTION 库名 WITH NO_LOG
再:
企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
3: 如果想以后不让它增长
企业管理器->服务器->数据库->属性->事务日志->将文件增长限制为2M
自动收缩日志,也可以用下面这条语句
ALTER DATABASE 数据库名
SET AUTO_SHRINK ON
故障还原模型改为简单,用语句是
USE MASTER
GO
ALTER DATABASE 数据库名 SET RECOVERY SIMPLE
GO
#2
当初我也是怀疑日志满
可我查了一下,发现并没有限制事务日志的尺寸大小,而是让它自动增长的,硬盘上也有应该有30个G的空闲,我才判断不了到底是哪里的问题
可我查了一下,发现并没有限制事务日志的尺寸大小,而是让它自动增长的,硬盘上也有应该有30个G的空闲,我才判断不了到底是哪里的问题
#3
奇怪,怎麼報:The log file for database 'DB_IP' is full.
幫你頂上去,希望有高手幫忙。
幫你頂上去,希望有高手幫忙。
#4
查看日志文件是否是只读的,如果不是,可以先将数据库分离,删除‘dp_ID_log.ldf',然后将dp_id_data.mdf文件附加上去。
#5
cqdj(cqdj)
不是很明白哦,日志文件为什么要设成只读啊,能说的详细些吗
不是很明白哦,日志文件为什么要设成只读啊,能说的详细些吗
#6
呵呵 估计你执行了对对日志文件增长较快的操作,当时你的数据库日志的是不是比较小的说?