清空日志
DUMP TRANSACTION 库名 WITH NO_LOG
DUMP TRANSACTION 库名 WITH NO_LOG
解决方案 »
- 一个带子查询的查询优化问题
- 请教:MSSQL的行锁与解锁,检索被锁的表.
- 请大家分析语句还能优化吗?
- 使用【A】表与【B】表的【A.体积】合计与【B.产品编码】计数的最大值作为条件得到【结果】表。
- [紧急]100分请教,4张表关联,使用临时表怎样写存储过程?
- SQL 四个表连接问题,请教
- sql数据库设计一个迷茫的问题?
- [数据类型转换问题] 求用整型数据存储日期数据的转换方法
- sql server 2k触发器紧急求助!!!
- 一个表中把一列设为“标识种子”后递增超过上限后会不会从又从1开始的?
- 如何实现下方地SQL...急....(100分)
- 在安装MDAC_TYP.EXE时出现,Unable to load SQL server ODBC driver resource dll.
backup log 数据库 with no_log
DECLARE @LogicaFILENAME SYSNAME,
@MAXMINUTES INT,
@NEWSIZE INI
USE MARIAS---要操作的数据库
SELECT @LOGICALFILENAME = 'MARIAS_LOG',---日志文件名
@MAXMINUTES = 10,---LIMIT ON TIME ALLOWED TO WRAP LOG.
@NEWSIZE = 100---你想设定的日志文件大小(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 INI,
@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,@STARTIME,GETDATE()) --TIME HAS NOE EXPIRED
AND @ORIGINALSIZE =(SELECT SIZE FROM SYSFILE WHERE NAME = @LOGICALFILENAME)
AND (@ORIGINALSIZE*8/1024)>@NEWSIZE
BEGIN --OUTER LOOP.
SELECT @COUNT = 0
WHILE((@COUNT<@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'+
CONVER(VARCHAR(30,(SIZE*8/1024))+'MB'
FROM SYSFILES
WHERE NAME = @LOGICALFILENAME
DROP TABLE DUMMYTRANS
SET NOCUNT OFF
展开"数据库"文件夹,右击要从中删除数据或日志文件的数据库,然后单击"属性"命令。
若要删除数据文件,单击"常规"选项卡。若要删除日志文件,单击"事务日志"选项卡。
在"文件名"列中,单击要删除的文件名旁边的箭头,再按 DELETE 键。文件名旁出现十字光标,表明将删除此文件。
说明 只能删除空文件。从数据库中删除文件之前,应先删除文件中的所有对象,并收缩该数据库
清空日志
DUMP TRANSACTION @DataBaseName WITH NO_LOG
DBCC SHRINKFILE( @LogoFileName,@NewSize)
--假设test2为数据库名称 日志已经很大的时候用
方法一此方法适用于7.0和2000。 1、在查询分析器中执行: exec sp_detach_db 'DB_Name','true' 2、在我的电脑中将日志的物理文件xxx_Log.LDF改名。 3、在查询分析器中执行: exec sp_attach_single_file_db 'DB_Name','C:\Program Files\Microsoft SQL Server\MSSQL\Data\DB_Name.MDF' 4、如果上一步成功,将步骤2中改名后的文件删除。如果上一步不成功,改回原来的文件名,用sp_attach_db将数据库附加到服务器,然后用方法二。 方法二 6.X中 DUMP TRANSACTION test2 with NO_LOG DUMP TRANSACTION test2 with TRUNCATE_ONLY 将上面的语句多次执行,直到日志缩小。7.0和2000中 backup log test2 with NO_LOG backup log test2 with TRUNCATE_ONLY DBCC SHRINKDATABASE(test2) 将上面的语句多次执行,直到日志文件缩小。上面的方法治标不治本,标本兼治要用下面的方法。 方法三: --6.X和7.0中改为日志处于截断模式,2000中恢复模型改为简单恢复 exec sp_dboption 'test2','trunc. log on chkpt.','on' --7.0和2000中设为自动收缩,6.x中不用执行。 exec sp_dboption 'test2','autoshrink','on' 通常用于测试环境。 方法四: --7.0中改为日志不处于截断模式,2000中恢复模型改为完全恢复 exec sp_dboption 'test2','trunc. log on chkpt.','off' --7.0和2000中设为自动收缩,6.x中不用执行。 exec sp_dboption 'test2','autoshrink','on' 建立作业,每半个小时一次日志备份,每天一次完全数据库备份。 7.0和2000中:在Log收缩到正常大小后,将autoshrink选项设置为off。通常用于真实环境。 在产品化系统中将autoshrink选项设置为开启状态并非明智之举(除非您真的需要这样做),这是因为,当您的系统正在忙于完成其它任务时,autoshrink选项可能会同时启动,从而降低系统运行速度。然而,对于那些数据库管理员无暇估计并且数据库尺寸有可能在您毫无察觉的情况下超出控制范围的桌面或远程系统来说,开启这一选项却是一种非常有效的措施。 收缩事务日志 在下列情况下,日志文件的物理大小将减少: *执行 DBCC SHRINKDATABASE 语句时。 *执行引用日志文件的 DBCC SHRINKFILE 语句时。 *自动收缩操作发生时。 日志收缩操作依赖于最初的日志截断操作。日志截断操作不减小物理日志文件的大小,但减小逻辑日志的大小,并将没有容纳逻辑日志任何部分的虚拟日志标记为不活动。日志收缩操作会删除足够多的不活动虚拟日志,将日志文件减小到要求的大小。 按下面任一方式控制事务日志的大小: *在维护日志备份序列时,调度 BACKUP LOG 语句按间隔发生,以使事务日志不致增长到超过预期的大小。 *当不维护日志备份序列时,指定简单恢复模式。 详情请参考 MS SQL Server 2000 联机丛书: 目录--> SQL Server构架-->数据库构架-->物理数据库构架-->事务日志构架-->收缩事务日志 目录--> SQL Server构架-->数据库构架-->物理数据库构架-->事务日志构架-->截断事务日志
你用'管理'->'数据库维护计划'来做
选择数据库->从数据库文件中删除未使用的空间
当数据库的大小超过n MB 时收缩数据库 保留 10 % 的数据空间作为可用空间,这样可以调度执行,不需要手工操作了