1. 程式人生 > >SqlServer壓縮資料庫日誌

SqlServer壓縮資料庫日誌

declare @dbName varchar(20)--資料庫名稱
declare @dbNamelog varchar(20)--資料庫日誌檔名稱

--替換成自己的檔名稱
select @dbName='dbname'
select @dbNamelog='dbname_log'


declare @sql nvarchar(2000)

set @sql='

USE '+@dbName+'

ALTER DATABASE '+@dbName+' SET RECOVERY SIMPLE WITH NO_WAIT

ALTER DATABASE '+@dbName+' SET RECOVERY SIMPLE

USE 
'+@dbName+' DBCC SHRINKFILE (N'''+@dbNamelog+''' , 11, TRUNCATEONLY) USE '+@dbName+' ALTER DATABASE '+@dbName+' SET RECOVERY FULL WITH NO_WAIT ALTER DATABASE '+@dbName+' SET RECOVERY FULL SELECT file_id, name FROM sys.database_files' exec(@sql)

主要語法如下:

DBCC SHRINKFILE
    

file_name | file_id }
        { [ ,target_size ]
            | [ , { EMPTYFILE | NOTRUNCATE | TRUNCATEONLY } ] 
        }
    )

引數

file_name

是已收縮檔案的邏輯名稱。檔名必須符合識別符號的規則。

file_id

是要收縮的檔案的標識 (ID) 號。若要獲得檔案 ID,請使用 FILE_ID 函式或在當前資料庫中搜索 sysfiles

target_size

是用兆位元組表示的所要的檔案大小(用整數表示)。如果沒有指定,DBCC SHRINKFILE 將檔案大小減少到預設檔案大小。

EMPTYFILE

將所有資料從指定檔案中遷移到同一檔案組中的其它檔案

NOTRUNCATE

導致將釋放的檔案空間保留在檔案中。

TRUNCATEONLY

導致檔案中的任何未使用的空間釋放給作業系統,並將檔案收縮到上一次分配的大小,從而減少檔案大小,而不移動任何資料。不嘗試將行重新定位到未分配頁。如果使用 TRUNCATEONLY,將忽略 target_size

 

轉至:https://www.cnblogs.com/wangqiang3311/p/7687073.html