轉自:
/*--壓縮資料庫的通用儲存過程
壓縮日誌及資料庫檔案大小
因為要對資料庫進行分離處理
所以儲存過程不能建立在被壓縮的資料庫中
--鄒建 2004.03--
*//*
--呼叫示例
exec p_compdb 'test'
--*/
usemaster
--注意,此儲存過程要建在master資料庫中
goif
exists
(select
*from
dbo.sysobjects
where
id =
object_id(n'
[dbo].[p_compdb]')
andobjectproperty
(id, n
'isprocedure')
=1)drop
procedure
[dbo].
[p_compdb]go
create
proc
p_compdb
@dbname
sysname,
--要壓縮的資料庫名
@bkdatabase
bit=
1,
--因為分離日誌的步驟中,可能會損壞資料庫,所以你可以選擇是否自動資料庫
@bkfname
nvarchar
(260)=
''--
備份的檔名,如果不指定,自動備份到預設備份目錄,備份檔案名為:資料庫名+日期時間
as--
1.清空日誌
exec('
dump transaction ['+
@dbname+'
] with no_log')
--2.截斷事務日誌:
exec('
backup log ['+
@dbname+'
] with no_log')
--3.收縮資料庫檔案(如果不壓縮,資料庫的檔案不會減小
exec('
dbcc shrinkdatabase(['+
@dbname+'
])')--
4.設定自動收縮
exec('
exec sp_dboption
'''+
@dbname
+''',''
autoshrink'',
''true
''')
--後面的步驟有一定危險,你可以可以選擇是否應該這些步驟
--5.分離資料庫
if@bkdatabase=1
begin
ifisnull
(@bkfname,''
)=''set
@bkfname
=@dbname+'
_'+convert
(varchar
,getdate
(),112)+
replace
(convert
(varchar
,getdate
(),108),'
:',''
)select
提示資訊='
備份資料庫到sql 預設備份目錄,備份檔案名:'+
@bkfname
exec('
backup database ['+
@dbname+'
] to disk=
'''+
@bkfname
+''''
)end
--進行分離處理
create
table
#t(fname
nvarchar
(260
),type
int)
exec('
insert into #t select filename,type=status&0x40 from ['+
@dbname+'
]..sysfiles')
exec('
sp_detach_db
'''+
@dbname
+'''')--
刪除日誌檔案
declare
@fname
nvarchar
(260
),@s
varchar
(8000
)declare
tb cursor
local
forselect
fname
from
#t where
type=64
open
tb fetch
next
from
tb into
@fname
while
@@fetch_status=0
begin
set@s='
del "'+
rtrim
(@fname)+
'"'exec
master..xp_cmdshell
@s,no_output
fetch
next
from
tb into
@fname
endclose
tbdeallocate
tb--
附加資料庫
set@s=''
declare
tb cursor
local
forselect
fname
from
#t where
type=0
open
tb fetch
next
from
tb into
@fname
while
@@fetch_status=0
begin
set@s=@s
+','''
+rtrim
(@fname)+
''''
fetch
next
from
tb into
@fname
endclose
tbdeallocate
tbexec('
sp_attach_single_file_db
'''+
@dbname
+''''+@s
)go
壓縮資料庫日誌
經常在csdn上看到發帖說,壓縮日誌檔案處理不當,導致資料庫損壞,甚至不能恢復資料,於是就寫了乙個通用的資料庫日誌檔案壓縮的儲存過程來解決此問題 壓縮資料庫的通用儲存過程 壓縮日誌及資料庫檔案大小 因為要對資料庫進行分離處理 所以儲存過程不能建立在被壓縮的資料庫中 鄒建 2004.03 引用請保留此...
壓縮資料庫日誌
經常在csdn上看到發帖說,壓縮日誌檔案處理不當,導致資料庫損壞,甚至不能恢復資料,於是就寫了乙個通用的資料庫日誌檔案壓縮的儲存過程來解決此問題 壓縮資料庫的通用儲存過程 壓縮日誌及資料庫檔案大小 因為要對資料庫進行分離處理 所以儲存過程不能建立在被壓縮的資料庫中 鄒建 2004.03 引用請保留此...
壓縮資料庫日誌
經常在csdn上看到發帖說,壓縮日誌檔案處理不當,導致資料庫損壞,甚至不能恢復資料,於是就寫了乙個通用的資料庫日誌檔案壓縮的儲存過程來解決此問題 壓縮資料庫的通用儲存過程 壓縮日誌及資料庫檔案大小 因為要對資料庫進行分離處理 所以儲存過程不能建立在被壓縮的資料庫中 鄒建 2004.03 引用請保留此...