仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 962|回复: 9
打印 上一主题 下一主题

[学习教程] MSSQL网站制作之减少SQL SERVER日记文件

[复制链接]
深爱那片海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:35:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
2008年1月16号MySQLAB被Sun公司收购。而2009年,SUN又被Oracle收购。就这样如同一个轮回,MySQL成为了Oracle公司的另一个数据库项目。serverSQLserver2000会有日记文件因为工夫的堆集愈来愈年夜的成绩:数据库实践巨细为15M,日记文件实践巨细为625KB(导出的日记文件),但日记文件实践占用空间为200MB(默许设置是文件日记会主动增加)。
假如想在数据库属性那边,间接将以后的日记文件的存储空间改小,是不可的。办理办法:
找到上面的代码,能够将日记文件减少到本人想要的巨细了。把代码COPY到查询剖析器里,,然后修正个中的3个参数(数据库名,日记文件名,和方针日记文件的巨细),运转便可!

SETNOCOUNTON
DECLARE@LogicalFileNamesysname,
@MaxMinutesINT,
@NewSizeINT

USEGFCMS--要操纵的数据库名
SELECT@LogicalFileName=GFCMS_log,--日记文件名
@MaxMinutes=10,--Limitontimeallowedtowraplog.
@NewSize=100--你想设定的日记文件的巨细(M),注重此巨细必需小于实践文件巨细

--Setup/initialize
--猎取原始文件巨细
DECLARE@OriginalSizeint

SELECT@OriginalSize=size
FROMsysfiles
WHEREname=@LogicalFileName

SELECTOriginalSizeof+db_name()+LOGis+
CONVERT(VARCHAR(30),@OriginalSize)+8Kpagesor+
CONVERT(VARCHAR(30),(@OriginalSize*8/1024))+MB
FROMsysfiles
WHEREname=@LogicalFileName
CREATETABLEDummyTrans
(DummyColumnchar(8000)notnull)


DECLARE@CounterINT,
@StartTimeDATETIME,
@TruncLogVARCHAR(255)
SELECT@StartTime=GETDATE(),
@TruncLog=BACKUPLOG+db_name()+WITHTRUNCATE_ONLY

EXEC(@TruncLog)--把log中可以shrink的transaction的log标志为能够扫除
DBCCSHRINKFILE(@LogicalFileName,@NewSize)--shrink文件

--Wrapthelogifnecessary.
WHILE@MaxMinutes>DATEDIFF(mi,@StartTime,GETDATE())--timehasnotexpired
AND@OriginalSize=(SELECTsizeFROMsysfilesWHEREname=@LogicalFileName)
AND(@OriginalSize*8/1024)>@NewSize
BEGIN--Outerloop.
SELECT@Counter=0
WHILE((@Counter<@OriginalSize/16)AND(@Counter<50000))
BEGIN--update
INSERTDummyTransVALUES(FillLog)
DELETEDummyTrans
SELECT@Counter=@Counter+1
END
EXEC(@TruncLog)
END

SELECTFinalSizeof+db_name()+LOGis+
CONVERT(VARCHAR(30),size)+8Kpagesor+
CONVERT(VARCHAR(30),(size*8/1024))+MB
FROMsysfiles
WHEREname=@LogicalFileName

DROPTABLEDummyTrans
SETNOCOUNTOFF

具体注释:关头的语句是:BACKUPLOG+db_name()+WITHTRUNCATE_ONLY和DBCCSHRINKFILE(@LogicalFileName,@NewSize)BACKUPLOG+db_name()+WITHTRUNCATE_ONLY:在不备份日记的情形下,删除不举动的日记部分,而且截断日记。可是,截断不减小物理日记文件的巨细,但减小逻辑日记文件的巨细。DBCCSHRINKFILE
压缩相干数据库的指定命据文件或日记文件巨细,即减小物理日记文件的巨细。语法
DBCCSHRINKFILE
({file_name|file_id}
{[,target_size]
|[,{EMPTYFILE|NOTRUNCATE|TRUNCATEONLY}]
}
)具体的形貌能够参考mk:@MSITStore:C:Program%20FilesMicrosoft%20SQL%20Server80ToolsBooks        sqlref.chm::/ts_dbcc_8b51.htmmk:@MSITStore:C:Program%20FilesMicrosoft%20SQL%20Server80ToolsBooksarchitec.chm::/8_ar_da2_7vaf.htm但我们知道,若使用statement,并没有上述需要的数据。试想binlog中记录了一句updatetsetf1=3whereid=3。怎么恢复呢?
小女巫 该用户已被删除
沙发
发表于 2015-1-19 17:53:37 | 只看该作者
换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的
若天明 该用户已被删除
板凳
发表于 2015-1-19 17:53:37 | 只看该作者
只能告诉你,学好数据库语言和原理,多见识几种数据库软件,比一棵树上吊死要好。
地板
发表于 2015-1-25 23:34:20 | 只看该作者
是要和操作系统进行Socket通讯的场景。否则建议慎重!
兰色精灵 该用户已被删除
5#
发表于 2015-2-4 13:23:26 | 只看该作者
大家注意一点。如下面的例子:
深爱那片海 该用户已被删除
6#
 楼主| 发表于 2015-2-9 23:38:47 | 只看该作者
外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
老尸 该用户已被删除
7#
发表于 2015-2-28 08:44:32 | 只看该作者
我是新手,正在学习数据库和操作系统,深感理论的泛广,唯有一步一步来,但是又感觉时间不够,收集了很多资料却总是没能认真的看完,希望有一个讨论板块,大家共同解决,共同分享,共同努力
简单生活 该用户已被删除
8#
发表于 2015-3-9 21:41:54 | 只看该作者
但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)
山那边是海 该用户已被删除
9#
发表于 2015-3-17 01:27:22 | 只看该作者
你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。
莫相离 该用户已被删除
10#
发表于 2015-3-23 15:05:57 | 只看该作者
其实可以做一下类比,Oracle等数据库产品老早就支持了java编程,而且提供了java池参数作为用户配置接口。但是现在有哪些系统大批使用了java存储过程?!连Oracle自己的应用都不用为什么?!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-21 08:16

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表