儲存過程備份SQL日誌

2021-03-31 08:56:28 字數 1917 閱讀 9731

set nocount on

declare @logicalfilename sysname,

@maxminutes int,

@newsize int

use "abc"-- 要操作的資料庫名

select @logicalfilename = 'abc_log', -- 日誌檔名

@maxminutes = 10, -- limit on time allowed to wrap log.

@newsize = 500 -- 你想設定的日誌檔案的大小(m)

-- setup / initialize

declare @originalsize int

select @originalsize = size 

from sysfiles

where name = @logicalfilename

select 'original size of ' + db_name() + ' log is ' + 

convert(varchar(30),@originalsize) + ' 8k pages or ' + 

convert(varchar(30),(@originalsize*8/1024)) + 'mb'

from sysfiles

where name = @logicalfilename

create table dummytrans

(dummycolumn char (8000) not null)

declare @counter int,

@starttime datetime,

@trunclog varchar(255)

select @starttime = getdate(),

@trunclog = 'backup log ' + db_name() + ' with truncate_only'

dbcc shrinkfile (@logicalfilename, @newsize)

exec (@trunclog)

-- wrap the log if necessary.

while @maxminutes > datediff (mi, @starttime, getdate()) -- time has not expired

and @originalsize = (select size from sysfiles where name = @logicalfilename) 

and (@originalsize * 8 /1024) > @newsize 

begin -- outer loop.

select @counter = 0

while ((@counter < @originalsize / 16) and (@counter < 50000))

begin -- update

insert dummytrans values ('fill log') 

delete dummytrans

select @counter = @counter + 1

end 

exec (@trunclog) 

end 

select 'final size of ' + db_name() + ' log is ' +

convert(varchar(30),size) + ' 8k pages or ' + 

convert(varchar(30),(size*8/1024)) + 'mb'

from sysfiles 

where name = @logicalfilename

drop table dummytrans

set nocount off

sql儲存過程

概念 sql server提供了一種方法,它可以將一些固定的操作集中起來由sql server資料庫伺服器來完成,以實現某個任務,這種方法就是儲存過程。儲存過程是sql語句和可選控制流語句的預編譯集合,儲存過程在資料庫中可由應用程式通過一個呼叫執行,而且允許使用者申明變數 有條件的執行以及其它強大的...

SQL儲存過程

儲存過程 1.返回值 create proc example4 as begin declare 返回值 int select 返回值 sum 庫存量 from 產品 return 返回值 endgo 接受這個返回值必須要用變數來接收,如 declare 接收值 int exec 接收值 examp...

SQL儲存過程

什麼是儲存過程呢?定義 將常用的或很複雜的工作,預先用sql語句寫好並用一個指定的名稱儲存起來,那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫execute,即可自動完成命令。講到這裡,可能有人要問 這麼說儲存過程就是一堆sql語句而已啊?microsoft公司為什麼還要新增...

SQL儲存過程

在大型資料庫系統中,儲存過程和觸發器具有很重要的作用。無論是儲存過程還是觸發器,都是sql 語句和流程控制語句的集合。就本質而言,觸發器也是一種儲存過程。儲存過程在運算時生成執行方式,所以,以後對其再執行時其執行速度很快。sql server 2000 不僅提供了使用者自定義儲存過程的功能,而且也提...

SQL儲存過程

類似於.ne程式設計中的方法,函式.和c 裡的方法一樣,由儲存過程名 儲存過程引數組成 可以有返回結果.前面學習的if else while 變數 insert select等,都可以在儲存過程中使用.優點 執行速度更快,在資料庫中儲存的儲存過程都是已經完成編譯的.允許模組化程式設計 類似方法的複用...