仓酷云

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

[学习教程] MSSQL网页编程之减少数据库日记另类办法

[复制链接]
分手快乐 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:32:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
两个到底是哪一个给出了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不一定有直接的逆操作。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-19 16:17:42 | 只看该作者
SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。
只想知道 该用户已被删除
板凳
发表于 2015-1-25 19:55:30 | 只看该作者
习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。
灵魂腐蚀 该用户已被删除
地板
发表于 2015-2-3 19:56:48 | 只看该作者
索引视图2k就有。但是2005对其效率作了一些改进但是schema.viewname的作用域真是太限制了它的应用面。还有一大堆的环境参数和种种限制都让人对它有点却步。
乐观 该用户已被删除
5#
发表于 2015-2-9 04:59:17 | 只看该作者
SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上.
活着的死人 该用户已被删除
6#
发表于 2015-2-27 00:00:18 | 只看该作者
但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)
海妖 该用户已被删除
7#
发表于 2015-3-8 18:45:41 | 只看该作者
至于淘汰的问题,只能说在你的项目周期之内,微软应该都不会倒闭。
莫相离 该用户已被删除
8#
发表于 2015-3-16 11:19:10 | 只看该作者
也可谈一下你是怎么优化存储过程的?
小魔女 该用户已被删除
9#
发表于 2015-3-22 22:48:42 | 只看该作者
备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-17 06:39

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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