事务日志已满 请参阅sys.databases中的log_reuse_wait_desc列
我把一个表大量数据insert into 到另一个数据库的表时,提示
数据库 'webdisk ' 的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列。
现在 是不能改insert语句和程序结构了,有没有办法解决这个问题
------解决方案----------------------select * from sysfiles
--1. 假設資料庫IEERP 資料檔iedata1(邏輯名稱), log檔ielog1(邏輯名稱)
--2.執行下列指令(各步驟都設定資料庫為IEERP):
dbcc shrinkfile(IEDB3_Log,notruncate)
dbcc shrinkfile(IEDB3_Log,truncateonly)
create table t1 (char1 char(4000))
go
declare @i
int select @i = 0
while (1 = 1)
begin
while (@i < 100)
begin
insert into t1 values ( 'a ') select @i = @i +1
end
truncate table t1
backup log ERPDB with truncate_only
end
go
--此段程式為無權迴圈, 請視log大小 執行約數分鐘或數小時再stop(一般而
--言,2~10分鐘應已足夠)
dbcc shrinkfile(IEDB3_Log,truncateonly)
drop table t1
-- 3.查看log file size 應已Shrink成功
------解决方案----------------------先备份数据库
--截断事务日志
backup log 数据库名 with no_log
go
--收缩数据库
dbcc shrinkdatabase(数据库名)
go