SQL2008:
'在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。
USE [master]
GO
ALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE DNName SET RECOVERY SIMPLE --简单模式
GO
USE DNName
GO
DBCC SHRINKFILE (N'DNName_Log' , 11, TRUNCATEONLY)
GO
'这里的DNName_Log 如果不知道在sys.database_files里是什么名字的话,可以用以下注释的语句进行查询
'USE DNName
'GO
'SELECT file_id, nameFROM sys.database_files;
'GO
USE [master]
GO
ALTER DATABASE DNName SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE DNName SET RECOVERY FULL --还原为完全模式
GO
将以上语句修改为以数据名为参数的SQL语句
declare @sql nvarchar(300)
declare @db varchar(50)
set @db='LiteMap'
set @sql='
USE [master]
ALTER DATABASE '+@db+' SET RECOVERY SIMPLE WITH NO_WAIT
ALTER DATABASE '+@db+' SET RECOVERY SIMPLE
USE '+@db+'
DBCC SHRINKFILE (N'''+@db+''' , 11, TRUNCATEONLY)
USE [master]
ALTER DATABASE '+@db+' SET RECOVERY FULL WITH NO_WAIT
ALTER DATABASE '+@db+' SET RECOVERY FULL '
exec(@sql)
如果日志名称与数据库名称不相同:
declare @db varchar(50)
declare @dblog nvarchar(50)
set @db='IEWSDB_HJ'
set @dblog='IEWSDB_HJ_log'
declare @sql nvarchar(500)
set @sql='
USE [master]
ALTER DATABASE '+@db+' SET RECOVERY SIMPLE WITH NO_WAIT
ALTER DATABASE '+@db+' SET RECOVERY SIMPLE
USE '+@db+'
DBCC SHRINKFILE ( N'''+@dblog+''' , 11, TRUNCATEONLY)
USE [master]
ALTER DATABASE '+@db+' SET RECOVERY FULL WITH NO_WAIT
ALTER DATABASE '+@db+' SET RECOVERY FULL '
exec(@sql)
联系客服