簡體   English   中英

縮小數據庫日志錯誤的簡單過程

[英]the simple procedure to shrink database log error

我寫了一個簡單的程序來縮小數據庫日志,只需要輸入數據庫名稱即可:

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

但是當我執行時:

exec sp_shrinkDBAndDBLog 'DBName'

錯誤:sys.database_files找不到數據庫“主”文件“ eca2_log”。該文件已刪除,不存在。

那是什么問題呢? 謝謝您告訴我,並顯示詳細信息和王子。

看起來您在執行DBCC SHRINKFILE命令之前可能缺少USE {database}命令,因此未在正確的數據庫上執行DBCC。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM