存储过程备份SQL日志

备份|存储过程

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

时间: 2024-09-22 09:26:30

存储过程备份SQL日志的相关文章

你还可以再诡异点吗——SQL日志文件不断增长

前言   今天算是遇到了一个罕见的案例. SQL日志文件不断增长的各种实例不用多说,园子里有很多牛人有过介绍,如果我再阐述这些陈谷子芝麻,想必已会被无数次吐槽. 但这次我碰到的问题确实比较诡异,其解决方式也是我第一次使用. 下文将为各位看管详细介绍我的解决思路.   现象   一客户反馈数据库的日志文件不断增长,已分配的磁盘空间快使用完,尝试过事务日志截断(事务日志备份)的操作,但没有任何效果.   分析   遇到这个问题,我最直接的感受:肯定有大的事务一直在执行,导致日志备份无法截断事务日志的

减少SQL日志的方法

一:分享]解决SQL日志增大的办*[望置顶]--假设test2为数据库名称在查询分析器中执行:backup log MuOnline with NO_LOGbackup log MuOnline with TRUNCATE_ONLYDBCC SHRINKDATABASE(MuOnline) 将上面的语句多次执行,直到日志文件缩小.exec sp_dboption 'MuOnline','autoshrink','on'建立作业,每半个小时一次日志备份,每天一次完全数据库备份.在Log收缩到正常大

缩小SQL日志

--缩小SQL日志 -- exec p_compdb 'test' create proc p_compdb@dbname sysname, --要压缩的数据库名@bkdatabase bit=1, --因为分离日志的步骤中,可能会损坏数据库,所以你可以选择是否自动数据库@bkfname nvarchar(260)='' --备份的文件名,如果不指定,自动备份到默认备份目录,备份文件名为:数据库名+日期时间as--1.清空日志exec('DUMP TRANSACTION ['+@dbname+'

JSP数据库操作例程 - 存储过程 - JDBC-ODBC - SQL Server - 1.1版本

js|odbc|server|存储过程|数据|数据库 <%--作者:何志强[hhzqq@21cn.com]日期:2000-08-04 2000-08-16版本:1.1功能:JSP数据库操作例程 - 存储过程 - JDBC-ODBC - SQL Server SQL Server的存储过程如下:    create procedure sp_jsptest       @yourname  varchar(50),       @myname varchar(50) output    as   

存储过程与SQL语句的一个故事

存储过程|语句     我的一位朋友说:他从台湾知名技术作家李维先生的一本书中获悉,如果用存储过程封装SQL语句,系统效率将有极大提升.    他做过实验!!! --我相信朋友做过实验,尽管非亲眼所见.不过我估计他的实验有问题,那样的实验不但蒙蔽了他,也蒙蔽了李维先生(如果他的著作中的内容没有被误会),甚至更多的人.    然而我必须拿出证据,方能使人信服.    后来遇到一个具体的问题:客户端经常要向数据库插入记录.在J2EE中,一个 Entity Bean Home 的 create 方法调

ASP调用存储过程访问SQL Server

server|存储过程|访问     ASP与存储过程(Stored Procedures)的文章不少,但是我怀疑作者们是否真正实践过.我在初学时查阅过大量相关资料,发现其中提供的很多方法实际操作起来并不是那么回事.对于简单的应用,这些资料也许是有帮助的,但仅限于此,因为它们根本就是千篇一律,互相抄袭,稍微复杂点的应用,就全都语焉不详了.     现在,我基本上通过调用存储过程访问SQL Server,以下的文字虽不敢保证绝对正确,但都是实践的总结,希望对大家能有帮助.      存储过程就是作

用最简单的步骤备份SQL数据库的文件到本地

用最简单的步骤备份sql数据库的文件到本地: response.Charset = "utf-8" Session.Codepage = 65001 Response.Buffer=true Response.Clear '根据你的情况修改用户名和密码 constr="Provider=SQLOLEDB.1;Persist Security Info=True;User ID=endiva;Password=endiva;Data Source=211.160.78.6&qu

在ASP.NET中用存储过程执行SQL语句

  存储过程:是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中.用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程.by google 存储过程执行效率比单独的SQL语句效率高. 样编写存储过程?存储过程在SQL Server 2005对应数据库的可编程性目录下. 比如,创建一个存储过程 create procedure procNewsSelectNewNews as begi

存储过程与SQL语句如何选择

58到家数据库30条军规,有一条是"禁止使用存储过程.视图.触发器.Event", 高并发大数据的互联网业务,架构设计思路是"解放数据库CPU,将计算转移到服务层", 并发量大的情况下,这些功能很可能将数据库拖死,业务逻辑放到服务层具备更好的扩展性,能够轻易实现"增机器就加性能". 数据库擅长存储与索引,在目前的互联网系统架构中,服务器的扩展要比存储的扩展更简单, 需要考虑系统可能的瓶颈在服务器还是数据存储,存储过程有它的优点,应该在开发中合理的