当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 15:22:00  来源:本站整理

SQL SERVER日记排除的两种办法[MSSQL防范]

赞助商链接



  本文“SQL SERVER日记排除的两种办法[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

办法一

普通情形下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日记大小,该当按期举行此操作免得数据库日记过大
1、设置数据库情势为简单情势:翻开SQL企业管理器,在掌握台根目录中顺次点开Microsoft SQL Server-->SQL Server组-->双击翻开你的服务器-->双击翻开数据库目录-->挑选你的数据库名称(如论坛数据库Forum)-->然后点击右键挑选属性-->挑选选项-->在弊端复原的情势中挑选"简单",然后按肯定保存
2、在当前数据库上点右键,看全部任务中的收缩数据库,普通里面的默许设置不用调整,直接点肯定
3、收缩数据库完成后,倡议将您的数据库属性重新设置为尺度情势,操作办法同第一点,因为日记在一些非常情形下常常是恢复数据库的重要根据

办法二

SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
??????? @MaxMinutes INT,
??????? @NewSize INT


USE???? tablename???????????? -- 要操作的数据库名
SELECT? @LogicalFileName = 'tablename_log',? -- 日记文件名
@MaxMinutes = 10,?????????????? -- Limit on time allowed to wrap log.
??????? @NewSize = 1????????????????? -- 你想设定的日记文件的大小(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 SERVER日记排除的两种办法[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • Windows 搭配 IIS7 PHP MySQL 环境
  • sqlserver索引的原理及索引成立的注意事项小结
  • SQL Join的一些总结(实例)
  • SQL的Join利用图解教程
  • SQL中JOIN和UNION辨别、用法及示例介绍
  • 关于SQL中CTE(公用表表达式)(Common Table Expression)的总结
  • mysql Out of memory (Needed 16777224 bytes)的错误办理
  • mysql提醒[Warning] Invalid (old?) table or database name问题的办理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • mysql启用skip-name-resolve情势时呈现Warning的处理办法
  • MySQL Order By语法介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .