最近的項目主要做數據的歸檔,把數據從一個數據庫拉到另一個數據庫,照成新數據庫的日志文件非常大;於是想把日志文件刪除。最簡單就是先分離數據庫-》刪除日志文件-》最后附加數據,我這里需要在SSIS中調用,所以已sql腳本為主。首先我們需要獲取數據庫文件的路徑:
declare @logfilename varchar(100)
declare @datafilename varchar(100)
select @logfilename=physical_name from sys.database_files where type=1
select @datafilename=physical_name from sys.database_files where type=0
然后切換到master下,分離數據庫
use master
exec sp_detach_db @dbname='TestVFA';
緊接下來就是刪除數據庫 日志文件
----Remove file
DECLARE @Result int
DECLARE @FSO_Token int
EXEC @Result = sp_OACreate 'Scripting.FileSystemObject', @FSO_Token OUTPUT
EXEC @Result = sp_OAMethod @FSO_Token, 'DeleteFile', NULL, @logfilename
EXEC @Result = sp_OADestroy @FSO_Token
最后就是附加數據庫
exec sp_attach_single_file_db @dbname='TestVFA',@physname=@datafilename
注意:默認Ole Automation Procedures 是禁用的我們需要啟用它
exec sp_configure 'show advanced options', 1;
RECONFIGURE;
exec sp_configure 'Ole Automation Procedures',1;
RECONFIGURE;
在實際項目中,我們往往會把數據庫的初始化大小設置的比較大,為了縮小這個初始化大小可以采用收縮數據,如
DBCC SHRINKFILE(1)