我用如下命令:
use master
go
alter database [Portal(TISS0113)] set recovery simple with no_wait
go
alter database [Portal(TISS0113)] set recovery simple
go
use [Portal(TISS0113)]
go
DBCC SHRINKFILE (N'Portal(kjwx)_Log' , 11, TRUNCATEONLY)
go
USE master
go
alter database [Portal(TISS0113)] set recovery full with no_wait
go
alter database [Portal(TISS0113)] set recovery full
go结果报: 无法收缩日志文件 2 ,因为该文件结尾的逻辑日志文件正在使用。(1 行受影响)
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
use master
go
alter database [Portal(TISS0113)] set recovery simple with no_wait
go
alter database [Portal(TISS0113)] set recovery simple
go
use [Portal(TISS0113)]
go
DBCC SHRINKFILE (N'Portal(kjwx)_Log' , 11, TRUNCATEONLY)
go
USE master
go
alter database [Portal(TISS0113)] set recovery full with no_wait
go
alter database [Portal(TISS0113)] set recovery full
go结果报: 无法收缩日志文件 2 ,因为该文件结尾的逻辑日志文件正在使用。(1 行受影响)
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
我用了
backup log [Portal(TISS0113)] with no_log
go
DBCC SHRINkdatabase ('Portal(TISS0113)', 20, TRUNCATEONLY)
结果报了:
消息 3032,级别 16,状态 2,第 1 行
此语句不支持一个或多个选项(no_log)。请查阅文档以了解所支持的选项。
DBCC SHRINKDATABASE: 已跳过数据库 ID 7 的文件 ID 1,因为该文件没有足够的可用空间可以回收。
无法收缩日志文件 2 (uniRMSPortal(kjwx)_Log),因为该文件结尾的逻辑日志文件正在使用。楼上能否解释一下具体如何执行checkpoint ?
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE AdventureWorks2008R2
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (AdventureWorks2008R2_Log, 1);
GO
-- Reset the database recovery model.
ALTER DATABASE AdventureWorks2008R2
SET RECOVERY FULL;
GO不能用backup log 。no_log 因为这在2008中已经禁用。用如上语句
直接执行 checkpoint 就可以了
语句有问题,TRUNCATEONLY 只适用于数据文件的收缩。你可以先看下文件的空余大小
use <dbnam>SELECT name
,size/128.0 as size_MB
,size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 AS AvailableSpaceInMB
,*
FROM sys.database_files;
go
然后在
dbcc shrinkfile(2)
go