- 浏览: 61695 次
- 性别:
- 来自: 上海
最新评论
-
feipigzi:
我觉得文章内容不如改成四个字——“顾名思义”
FRAMESET和IFRAME各自的优点和缺点 -
yuchujin:
这个也太短了吧
FRAMESET和IFRAME各自的优点和缺点
首先备份数据库
然后备份文件,备份日志文件,可改名
在 查询分析器里执行 sp_attach_single_file_db,将生成新的日志文件
具体怎么做,我也没做过,让有经验的人回答。,我去收集一下这方面的资料
从大洋网摘录的方法,未试过
用 bcp命令把数据库中的记录都导出来保存到另一台机器,然后用truncate table tablename
的方式把所有记录都清空,然后执行dump transaction dbname with no_log,发现log文件已显著减少,再用bcp命令导入,导入后log文件又增大,但再用 dump transaction dbname with no_log,效果不仅是使日志占的空间减少,日志文件的size也显著减少。
前几天也碰到日志文件过大的问题,数据库实际大小为600M, 日志文件实际大小为33M, 但日志文件占用空间为2.8G!!!
试了多种方式,SHIRNK DATABASE, TRUNCATE LOG FILE, 都没办法将文件缩小。无论如何,这应该算SQL SERVER的一个BUG吧。
后来找到下面的代码,就可以将日志文件缩小到自己想要的大小了。把代码COPY到查询分析器里,,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可(我已经用过多次了)
-----
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
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 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
理解日志截断选项
不同的备份日志截断选项经常被DBA新手所忽视。DBA新手通常并不知道选项存在或了解它们的作用。怎样使用或什么时候时候它们,以下的几小节详细解释每个选项的作用以及在什么时候使用它。
TRUNCATE_ONLY
TRUNCATE_ONLY选项截掉事务日志的非活动部分,而不备份(拷贝)日志到备份设备上。因为日志没有拷贝,所以在使用TRUNCATE_ONLY时,不必指明备份设备。例如,用TRUNCATE_ONLY选项备份主数据库事务日志的语法如下:
Backup Log master
WITH TRUNCATE_ONLY
在以下情况下使用TRUNCATE_ONLY:
如果你不是为了恢复目的使用事务日志,并且依赖于完整数据库备份(完整或差异)。如果没有执行数据库备份就使用TRUNCATE_ONLY选项,你将不能在带有TRUNCATE_ONLY的BACKUP LOG命令执行时,恢复事务日志非活动部分的已完成事务。
NO_LOG
当有NO_LOG选项的BACKUP LOG命令执行时,SQL SERVER不记录BACKUP LOG命令,就截断事务日志的非活动部分。
仅当事务日志完全填满时才使用NO_LOG选项,当日志完全填满时,你不能通过执行一条普通的BACKUP LOG命令来截断事务日志。这样是因为SQL SERVER试图记录BACKUP命令,而在事务日志中却没有剩余空间。和TRUNCATE_ONLY选项一样,NO_LOG选项不需要备份设备,因为日志并不拷贝到设备上去。
NO_TRUNCATE
当你试图进入的数据库被破坏并打算恢复数据库时,使用NO_TRUNCATE选项。要使用NO_TRUNCATE,必须满足以下条件:
事务日志必须和数据库在不同的设备上。
MASTER数据库必须没有被破坏
NO_TRUNCATE记录从最近一次事务日志备份,到数据库破坏点的所有事务日志项。然后恢复事务日志备份作为最近一次备份,它在恢复过程中,可精确到毫秒级。
很多时候,我们被数据库日志文件大小不断在增加而困挠,虽然可以用截短事务日志的命令dump transaction database_name with no_log来使日志占用实际物理log文件的空间的百分比减小,但数据库log文件的把磁盘的空间霸占着不用,使其他的程序所需的空间受到影响。为此,我做了很多次试验,以探讨能够直接减小log文件大小的方法,请方家指教!
根据db_option中的有关选项,在不同设置时,做dump transaction database_name with no_log操作后,发现log文件的total space都不变化,只是used space变小,而free space相应变大。这样的变化意味着,你以后的日志还有可写入的空间,因为空间被预留了。但当这个log文件已经太大,而影响了其他程序的使用空间时,这样的结果并不是我需要的。
后来我做了一个这样的操作,用bcp命令把数据库中的记录都导出来保存到另一台机器的硬盘上。然后用truncate table table_name的方式把所有的记录都清空,然后执行dump transaction database_name with no_log,发现log文件已经显著地减小,再用bcp命令将之前导出的数据导入到数据库中,导入完成后,log文件又增大了,但再用dump transaction database_name with no_log命令操作时,效果不仅是使日志占用空间减少,日志文件的size也显著地减小。
对于以上现象,请有兴趣的同道予以验证,至于这个操作对数据库的物件和完整性是否有影响,还望高手指教!
另外:DUMP TRANSACTION mv3 WITH NO_LOG
先执行这条语句,再收缩
发表评论
-
mysql 索引查询优化
2010-09-21 12:57 1461转载:http://hi.baidu.com/we ... -
SQL监控
2010-09-21 12:49 1125<script src="http://w ... -
SQL Server中各个系统表的作用(转载)
2006-06-07 16:22 1372sysaltfiles 主数据库 ... -
[SQL Server]管理常用SQL语句 (转载)
2006-06-07 16:23 921[SQL Server]管理常用SQL语 ... -
最新注册号码(不断更新)
2006-06-08 14:04 792http://vscool.net/read.php?tid= ... -
让SQL Server为工作负载高峰提前做好准备
2006-07-25 16:18 723毫无疑问,许多电子商 ... -
SQL SERVER乐观锁定和悲观锁定使用实例
2006-08-28 14:42 925乐观锁定,悲观锁定,锁 ... -
弹出新窗口,填写数据,提交后,关闭该弹出窗口,刷新父页面
2006-09-08 10:06 2488父窗口弹出子窗口的 button处理事件:private v ... -
SQL SERVER导入导出大阅兵
2006-09-13 11:12 1398【IT168 技术专题】在我们使用SQL SERVER中,最常 ... -
数据导入导出工具BCP详解
2006-09-13 11:15 1577IT168 技术文档】bcp是SQL Server中负责导入导 ... -
使用Transact-SQL进行数据导入导出方法详解
2006-09-13 11:16 924IT168 技术文档】本文讨论了如何通过Transact-SQ ... -
SQL Server 2000中的触发器使用
2006-09-13 11:18 1007触发器是数据库应用中的重用工具,它的应用很广泛。这几天写一个化 ... -
SQL SERVER 与ACCESS、EXCEL的数据转换
2006-09-13 11:22 709熟悉SQL SERVER 2000的数据库管理员都知道,其DT ... -
Sql server优化50法
2006-09-13 11:22 901查询速度慢的原因很多,常见如下几种: 1、没有索引或者没有 ... -
SQL中怎么样自动生成表的更新脚本
2006-09-13 11:29 1688问题的提出:每当新建一个数据表,要建立个UP_TableNam ... -
SQL Server 2000 中递归
2006-09-22 13:31 1076CREATE FUNCTION dbo.Fun_Get_Cat ...
相关推荐
你是否想读取和分析SQL Server日志文件 (.ldf) ?正找不到合适的软件呢?以上一款强大的sql数据库日志分析工具,可以轻松打开查看ldf,mdf日志文件,还可以连接sql数据库进行分析。 事务日志是数据库的一个关键组件。...
总之,理解SQL Server日志文件的工作原理以及如何管理和收缩日志文件对于优化数据库性能和管理存储空间至关重要。在进行任何日志文件操作时,应确保对业务的影响最小,并遵循最佳实践,以避免可能的数据丢失或性能...
根据提供的文件信息,本文将详细解释SQL Server日志删除及管理的相关知识点,包括但不限于日志文件的删除、收缩以及自动收缩设置等。 ### SQL Server 日志管理基础 在SQL Server中,事务日志(Transaction Log)是...
Log Explorer 4.2 是一款专门针对Microsoft SQL Server的日志分析软件,提供了丰富的功能来管理和分析SQL Server的日志文件。 1. **SQL Server日志类型**: - **事务日志**:记录所有数据库更改操作,包括DML...
SQLSERVER日志分析工具是一种专门针对Microsoft SQL Server数据库系统设计的实用软件,旨在帮助数据库管理员和开发者有效地管理和解析SQL Server的日志数据。日志分析在数据库管理中扮演着至关重要的角色,因为它能...
本文将详细介绍快速清除SQLServer日志的两种方法,包括清空日志和删除LOG文件,并且对每种方法进行了详细的解释和操作步骤。 清空日志 清空日志是快速清除SQLServer日志的第一种方法。这种方法可以通过使用DUMP ...
将Sql Server 2000中的数据库备份文件还原到sql2005中 将Sql Server 2000中的数据库备份文件还原到Sql Server 2005中是一个常见的问题。在这个过程中,我们需要了解Sql Server 2000和Sql Server 2005之间的差异,...
然而,随着数据库操作的增多,日志文件往往会变得非常庞大,占用大量磁盘空间,这正是"SQL SERVER 2000压缩日志工具"发挥作用的地方。 日志文件,也称为交易日志,记录了数据库的所有更改操作,包括插入、删除和...
在SQL Server 2000中,数据库日志是一个至关重要的组成部分,用于记录所有的事务信息,包括对数据库的修改操作。然而,随着数据库活动的增加,日志文件可能会变得非常大,占用大量的磁盘空间,这可能会影响系统性能...
在SQL Server 2000中,当数据库的日志文件丢失或者损坏时,恢复数据库的过程变得复杂。然而,根据给出的步骤,我们可以看到一个没有日志文件时的应急恢复策略。以下是对这些步骤的详细解释: 1. **开启数据库**:...
### SQL Server处理事务日志文件过大方法 #### 一、问题背景 在SQL Server数据库管理系统中,事务日志文件(Transaction Log File)是用于记录所有事务更改的关键组件之一。随着数据库活动的增加,特别是当数据库...
在Windows系统中,SQL Server错误日志通常位于`%ProgramFiles%\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\LOG`目录下,交易日志则与数据库文件在同一目录下。 3. **Java连接SQL Server**: 要从SQL Server...
这两个文件是Java应用程序连接到SQL Server 2000的桥梁,它们允许Java代码通过标准的JDBC接口执行SQL查询,插入数据,更新和删除记录。 首先,让我们了解JDBC。JDBC是Java平台的一个标准接口,由Sun Microsystems...
SQL Server日志清理工具是一款专为SQL Server数据库设计的实用软件,主要用于管理和优化数据库的日志文件,以确保系统的高效运行和稳定性能。日志文件在SQL Server中扮演着至关重要的角色,它们记录了所有事务的详细...
本压缩包文件"sql server 2000 试题汇编答案"显然是针对SQL Server 2000的练习题集及解答,旨在帮助学习者提升对SQL Server 2000的理解和操作技能。以下将详细探讨SQL Server 2000的相关知识点: 1. **SQL Server ...
但是,随着数据的增长,SQL Server 的日志文件也会不断增长,占用越来越多的磁盘空间。如果不及时处理,日志文件的增长可能会导致数据库性能下降、甚至崩溃。因此,如何解决 SQL Server 日志满问题变得非常重要。 ...
在IT行业中,数据库管理系统是数据存储和管理的核心工具,而SQL Server 2000作为微软公司推出的一款经典关系型数据库管理系统,对于许多企业和开发者来说,仍然是他们系统架构中的重要组成部分。本文将深入探讨SQL ...
SQL SERVER的Always On技术是一种高可用性和灾难恢复解决方案,它提供了数据库级别的容错能力。在Always On环境中,数据库被分为主副本和一...正确处理这些问题,可以帮助优化日志空间使用,同时保持数据库的高可用性。
标题与描述均指向了一个具体的技术问题的解决方法——在SQL Server 2008中如何删除或压缩数据库日志。这一需求通常出现在日志文件占用过多磁盘空间,或者备份过程耗时过长,影响正常业务操作的情况下。下面将详细...
在探讨如何利用SQL Server 2000中的日志恢复数据库之前,首先要了解SQL Server 2000是一个关系型数据库管理系统,由微软公司开发。它提供了一系列用于存储、检索和操作数据的工具。数据库日志文件(通常以.ldf为扩展...