[英]the simple procedure to shrink database log error
I write a simple procedure to shrink database log,just need to input the database name: 我写了一个简单的程序来缩小数据库日志,只需要输入数据库名称即可:
ALTER proc [dbo].[sp_shrinkDBAndDBLog]
@databaseName nvarchar(100)
as
begin
declare @logName nvarchar(100),
@dynamicSQL nvarchar(500)
set @dynamicSQL='ALTER DATABASE '+@databaseName+' SET RECOVERY SIMPLE WITH NO_WAIT'
exec(@dynamicSQL)
--select name from HLJEDI_SYS.sys.sysfiles where groupid=0;
set @dynamicSQL=N'select @logName= name from '+@databaseName+'.sys.database_files where type_desc=''LOG'''
exec sp_executesql @dynamicSQL,N'@logName nvarchar(100) output',@logName output
--select * from sys.sysfiles where groupid=0
set @dynamicSQL='DBCC SHRINKFILE (N'''+@logName+''',11,TRUNCATEONLY)'
exec(@dynamicSQL)
--DBCC SHRINKFILE (N'CUC_OA_LOG' , 11, TRUNCATEONLY)
set @dynamicSQL='ALTER DATABASE '+@databaseName+' SET RECOVERY FULL WITH NO_WAIT'
exec(@dynamicSQL)
--ALTER DATABASE OA SET RECOVERY FULL --(Restore to Full Schema)
end
but when i execute with: 但是当我执行时:
exec sp_shrinkDBAndDBLog 'DBName'
it has error: sys.database_files can't find database 'master' file 'eca2_log'。The file was been deleted and not exists。 错误:sys.database_files找不到数据库“主”文件“ eca2_log”。该文件已删除,不存在。
And what is the problem? 那是什么问题呢? Thank you if you tell me and show the detail and princeple.
谢谢您告诉我,并显示详细信息和王子。
看起来您在执行DBCC SHRINKFILE命令之前可能缺少USE {database}命令,因此未在正确的数据库上执行DBCC。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.