MSSQL网页编程之减少数据库日记另类办法
两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。数据|数据库--功效申明:减少数据库日记文件
--
--e.g:数据库名为abc
--------------------------------------------------------------
SETNOCOUNTON
DECLARE@LOGICALFILENAMESYSNAME,
@MAXMINUTESINT,
@NEWSIZEINT
USEabc---要操纵的数据库
SELECT@LOGICALFILENAME=abc_LOG,---日记文件名
@MAXMINUTES=10,---LIMITONTIMEALLOWEDTOWRAPLOG.
@NEWSIZE=1---你想设定的日记文件巨细(M)
--SETUP/INITIALIZE
DECLARE@ORIGINALSIZEINT
SELECT@ORIGINALSIZE=SIZE
FROMSYSFILES
WHERENAME=@LOGICALFILENAME
SELECT原日记巨细=ORIGINALSIZEOF+DB_NAME()+LOGIS+
CONVERT(VARCHAR(30),@ORIGINALSIZE)+8KPAGESOR+
CONVERT(VARCHAR(30),(@ORIGINALSIZE*8/1024))+MB
FROMSYSFILES
WHERENAME=@LOGICALFILENAME
CREATETABLEDUMMYTRANS
(DUMMYCOLUMNCHAR(8000)NOTNULL)
DECLARE@COUNTINT,
@STARTTIMEDATETIME,
@TRUNCLOGVARCHAR(255)
SELECT@STARTTIME=GETDATE(),
@TRUNCLOG=BACKUPLOG+DB_NAME()+WITHTRUNCATE_ONLY
DBCCSHRINKFILE(@LOGICALFILENAME,@NEWSIZE)
EXEC(@TRUNCLOG)
--WRAPTHELOGIFNECESSARY
WHILE@MAXMINUTES>DATEDIFF(MI,@STARTTIME,GETDATE())--TIMEHASNOEEXPIRED
AND@ORIGINALSIZE=(SELECTSIZEFROMSYSFILESWHERENAME=@LOGICALFILENAME)
AND(@ORIGINALSIZE*8/1024)>@NEWSIZE
BEGIN--OUTERLOOP.
SELECT@COUNT=0
WHILE((@COUNT<@ORIGINALSIZE/16)AND(@COUNT<50000))
BEGIN--UPDATE
INSERTDUMMYTRANSVALUES(FILLLOG)
DELETEDUMMYTRANS
SELECT@COUNT=@COUNT+1
END
EXEC(@TRUNCLOG)
END
SELECT新日记巨细=FINALSIZEOF+db_NAME()+LOGIS+
CONVERT(VARCHAR(30),SIZE)+8KPAGESOR+
CONVERT(VARCHAR(30),(SIZE*8/1024))+MB
FROMSYSFILES
WHERENAME=@LOGICALFILENAME
DROPTABLEDUMMYTRANS
SETNOCOUNTOFF
有了数据以后,我们就要想一个比较统一的方法来闪回。上面我们说了对于DML操作,可以通过反向执行所有逆操作来实现,对于语句里面的DDL,只能直接跳过。原因是一个DDL不一定有直接的逆操作。 SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。 习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。 索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。 SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上. 但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右) 至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。 也可谈一下你是怎么优化存储过程的? 备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。
页:
[1]