sql server日志文件总结及日志满的处理办法

合集下载

SQL SERVER清除日志的四种方法

SQL SERVER清除日志的四种方法

文档编号: WD060112226 参考方案 文档标题: SQL SERVER清除日志的四种方法 操作系统: 未知 数 据 库: Sql Server 2000 软件版本: 未知 软件模块: 性能优化 问题描述: SQL SERVER清除日志的四种方法 产生原因: 日常维护 解决方法: MS SQL SERVER日志增长非常快,使用时间长了以后,日志文件会很大,占用很大的硬盘空间,因此需要定时清除日志,可以采用以下四种方法:方法一:1、打开查询分析器,输入命令BACKUP LOG database_name WITH NO_LOG2、再打开企业管理器--右键要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至xxm,这里会给出一个允许收缩到的最小m数,直接输入这个数,确定就可以了。方法二:设置检查点,自动截断日志 一般情况下,SQL数据库的收缩并不能很大程度上减小数据库大小,其主要作用是收缩日志大小,应当定期进行此操作以免数据库日志过大1、设置数据库模式为简单模式:打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server-->SQL Server组-->双击打开你的服务器-->双击打开数据库目录-->选择你的数据库名称(如用户数据库cwbase1)-->然后点击右键选择属性-->选择选项-->在故障还原的模式中选择“简单”,然后按确定保存2、在当前数据库上点右键,看所有任务中的收缩数据库,一般里面的默认设置不用调整,直接点确定3、收缩数据库完成后,建议将您的数据库属性重新设置为标准模式,操作方法同第一点,因为日志在一些异常情况下往往是恢复数据库的重要依据方法三:通过SQL收缩日志把代码复制到查询分析器里,然后修改其中的3个参数(数据库名,日志文件名,和目标日志文件的大小),运行即可SET NOCOUNT ONDECLARE @LogicalFileName sysname,@MaxMinutes INT,@NewSize INTUSE tablename -- 要操作的数据库名SELECT @LogicalFileName = 'tablename_log', -- 日志文件名@MaxMinutes = 10, -- Limit on time allowed to wrap log.@NewSize = 1 -- 你想设定的日志文件的大小(M)-- Setup / initializeDECLARE @OriginalSize intSELECT @OriginalSize = size FROM sysfilesWHERE name = @LogicalFileNameSELECT 'Original Size of ' + db_name() + ' LOG is ' + CONVERT(VARCHAR(30),@OriginalSize) + ' 8K pages or ' + CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'FROM sysfilesWHERE name = @LogicalFileNameCREATE 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 @MaxMi

sql server 2008数据库操作日志

sql server 2008数据库操作日志

sql server 2008数据库操作日志

SQL Server 2008数据库操作日志详解

SQL Server 2008是微软推出的一款关系型数据库管理系统。在数据库操作中,无论是进行插入、更新、删除等操作,都会在操作时生成一条日志记录,即数据库操作日志。本文将深入解析SQL Server 2008数据库操作日志,从日志类型、作用、管理与分析等多个角度进行探讨,希望能为读者提供一个全面的了解。

一、数据库操作日志的类型

SQL Server 2008数据库操作日志主要分为两种类型:事务日志和错误日志。

1. 事务日志

事务日志是数据库操作中最重要的一部分,用于记录每个事务的操作信息。事务被视为一组相互关联的操作,在其执行过程中要么全部成功提交,要么全部失败回滚。事务日志记录了这些操作的顺序和内容,可以在事务提交或回滚时进行恢复和重做。

2. 错误日志

错误日志主要用于记录数据库操作中的错误信息。当数据库处于故障状态或者操作产生与预期结果不符的异常情况时,错误日志记录了相关的错误

信息。这些错误信息对于排查和解决问题非常重要。

二、数据库操作日志的作用

数据库操作日志在数据库管理中起到了至关重要的作用,具体体现在以下几个方面。

1. 恢复和重做

事务日志记录了数据库操作的完整历史,可以用于数据库故障后的恢复和重做。当数据库遭受意外损坏或崩溃时,可以通过日志文件对数据库进行恢复,确保数据的丢失量最小。

2. 保证数据一致性

数据库操作往往涉及多个数据表之间的关系,事务日志的存在可以保证多表操作的一致性。如果某个操作在执行过程中发生了意外中断,数据库可以利用事务日志回滚到操作前的状态,确保数据库的一致性。

SQLSERVER清除日志的四种方法

SQLSERVER清除日志的四种方法

SQLSERVER清除日志的四种方法

SQL Server 是一款功能强大的数据库管理系统,但由于其日志文件

的持续增长,可能会占用大量的磁盘空间。为了解决这个问题,SQL Server 提供了多种方法来清除日志。本文将介绍 SQL Server 清除日志

的四种常见方法。

方法一:备份日志

备份日志是最常用的清除 SQL Server 日志的方法之一、备份日志将

日志文件中已经提交的事务从日志文件中删除,并将未提交的事务保存在

日志中。这样可以大大减小日志文件的大小,释放磁盘空间。

备份日志的具体步骤如下:

1. 在 SQL Server Management Studio 中选择要备份日志的数据库。

2.右键单击数据库,选择“任务”>“备份”。

3.在“备份数据库”对话框中,选择“事务日志”。

4.在“备份到”下拉列表中选择备份文件的位置和名称。

5.单击“确定”开始备份日志。

备份日志的频率取决于数据库的需求,可以每天备份一次,也可以根

据业务需求更频繁地备份。

方法二:备份并截断日志

备份并截断日志是另一种清除 SQL Server 日志的常见方法。该方法

包括备份日志和截断日志两个步骤。备份日志的作用是和方法一相同,截

断日志的作用是删除已经备份的日志,释放磁盘空间。

备份并截断日志的具体步骤如下:

1. 在 SQL Server Management Studio 中选择要备份和截断日志的

数据库。

2.右键单击数据库,选择“任务”>“备份”。

3.在“备份数据库”对话框中,选择“事务日志”。

4.在“备份到”下拉列表中选择备份文件的位置和名称。

清除sql日志

清除sql日志

如何清除sql server日志1.打开查询分析器,输入命令DUMP TRANSACTION 数据库名 WITH NO_LOG2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。清除Log有两种方法: 1.自动清除法 开放数据库选项 Trunc Log on Chkpt,使数据库系统每隔一段时间自动清除Log。此方法的优点是无须人工干预,由SQL Server自动执行,并且一般不会出现Log溢满的情况;缺点是只清除Log而不做备份。 2.手动清除法 执行命令“dump transaction”来清除Log。以下两条命令都可以清除日志:dump transaction with truncate_onlydump transaction with no_log 通常删除事务日志中不活跃的部分可使用“dump transaction with trancate_only”命令,这条命令写进事务日志时,还要做必要的并发性检查。SYBASE提供“dump transaction with no_log”来处理某些非常紧迫的情况,使用这条命令有很大的危险性,SQL Server会弹出一条警告信息。为了尽量确保数据库的一致性,你应将它作为“最后一招”。 以上两种方法只??清除日志,而不做日志备份,若想备份日志,应执行“dump transaction database_name to dumpdevice”命令。PS:附一个更好的方法先分离数据库后,直接删除日志以后,再在查询分析器里用exec sp_attach_single_file_db '数据库名', '.mdf文件路径'命令附加数据库。 OVER.在别的地方看到的 不错。数据库日志操作先提供一种复杂的方法压缩日志及数据库文件如下:1.清空日志 DUMP TRANSACTION 库名 WITH NO_LOG 2.截断事务日志: BACKUP LOG 数据库名 WITH NO_LOG3.收缩数据库文件(如果不压缩,数据库的文件不会减小 企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件 --选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了 --选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了 也可以用SQL语句来完成 --收缩数据库 DBCC SHRINKDATABASE(客户资料) --收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles DBCC SHRINKFILE(1)4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行) a.分离数据库: 企业管理器--服务器--数据库--右键--分离数据库 b.在我的电脑中删除LOG文件 c.附加数据库: 企业管理器--服务

sql2012日志文件过大的处理方法

sql2012日志文件过大的处理方法

sql2012日志文件过大的处理方法

SQL Server是一个广泛使用的关系型数据库管理系统,它的日志文件记录了数据库的所有操作,包括增删改查等。随着数据库的使用增加,日志文件的大小也会不断增长,如果不及时处理,会占用大量磁盘空间,影响系统性能。本文将介绍SQL Server 2012日志文件过大的处理方法。

1. 查看日志文件大小

我们需要查看当前数据库的日志文件大小,可以使用以下SQL语句:```

USE [数据库名]

GO

EXEC sp_helpfile

```

其中,[数据库名]为需要查看的数据库名称。执行以上语句后,可以得到当前数据库的日志文件大小和路径信息。

2. 查看日志文件使用率

接下来,我们需要查看当前日志文件的使用率,以确定是否需要进行日志文件的处理。可以使用以下SQL语句:

```

USE [数据库名]

GO

DBCC SQLPERF(logspace)

```

执行以上语句后,会返回当前数据库的日志文件使用情况,包括日志文件大小、已使用空间和剩余空间等信息。

3. 备份日志文件

在进行日志文件处理之前,建议先备份当前的日志文件,以防止数据丢失。可以使用以下SQL语句进行日志文件备份:

```

BACKUP LOG [数据库名] TO DISK = '备份路径'

```

其中,[数据库名]为需要备份的数据库名称,'备份路径'为备份文件的保存路径。

4. 缩小日志文件

一旦确定需要处理日志文件,可以使用以下SQL语句缩小日志文件:```

USE [数据库名]

GO

DBCC SHRINKFILE (2, TRUNCATEONLY)

清理 sql server 数据库日志的几种方法

清理 sql server 数据库日志的几种方法

清理 SQL Server 数据库日志的几种方法

随着企业数据量的不断增加,数据库的日志文件也会随之增长。数据库日志文件的不断增长会消耗大量磁盘空间,甚至会影响数据库的性能。定期清理数据库日志是数据库管理的一个重要环节。本文将介绍清理 SQL Server 数据库日志的几种方法,帮助数据库管理员解决数据库日志文件过大的问题。

一、备份事务日志

1. 利用 SQL Server Management Studio (SSMS) 进行备份

通过使用 SSMS,可以进行数据库事务日志的定期备份。在 SSMS 中选择要备份的数据库,右键点击“任务”->“备份”,在备份类型中选择“仅事务日志”,即可完成事务日志的备份。

2. 利用 T-SQL 命令进行备份

在 SQL Server 中,可以通过使用 T-SQL 命令进行事务日志的备份。例如:

```

BACKUP LOG [数据库名] TO DISK = '备份文件路径' WITH NOFORMAT, NOINIT, NAME = '备份名称', SKIP, NOUNLOAD, STATS = 10

```

通过上述两种备份方式,可以定期备份数据库的事务日志,避免日志文件过大。

二、修改日志文件的增长方式

1. 修改日志文件增长的百分比

在数据库管理中,可以通过修改数据库的日志文件的增长百分比来控制日志文件的增长。通过减小增长百分比,可以减缓日志文件的增长速度,从而减少磁盘空间的消耗。

2. 修改日志文件的增长大小

除了修改增长百分比外,还可以通过修改日志文件的增长大小来控制日志文件的大小。将增长大小设置为一个合适的值,可以避免日志文件过大,减少磁盘空间的占用。

SQLSERVER清除日志的四种方法

SQLSERVER清除日志的四种方法

SQLSERVER清除日志的四种方法

SQL Server是一种关系型数据库管理系统,它将数据存储在表格中,并使用结构化查询语言(SQL)来管理和操作这些数据。在SQL Server中,日志文件用于记录数据库的各种操作,包括插入、更新和删除数据的操作。随着时间的推移,日志文件可能会变得庞大,导致数据库性能下降。为了

解决这个问题,SQL Server提供了多种方法来清除日志。

1.使用备份和恢复

备份和恢复是清除日志的最常用方法之一、通过定期备份数据库并将

日志截断,可以清除日志文件并释放空间。备份可以选择完整备份、差异

备份或增量备份。完整备份将整个数据库备份到一个文件中,差异备份将

备份自上次完整备份以来发生更改的部分,增量备份则只备份自上次备份

以来发生更改的部分。备份完成后,可以通过将数据库设置为简单恢复模

式或完全恢复模式来截断日志,以释放日志空间。

2.使用事务日志管理

SQL Server提供了事务日志管理功能,可以帮助清除日志。通过调

整事务日志的大小和日志增长的百分比,可以限制日志文件的增长。可以

使用以下命令来管理事务日志大小和增长:

- ALTER DATABASE <database_name> SET RECOVERY SIMPLE:将数据

库设置为简单恢复模式,该模式只保留最近的日志信息,并定期截断日志。

- ALTER DATABASE <database_name> MODIFY FILE (NAME =

<log_file_name>, SIZE = <new_size>):调整日志文件的大小。

SQL2000日志清理方法

SQL2000日志清理方法

SQL2000日志清理方法

SQL Server 2000是一个非常古老的数据库管理系统,虽然已经过时,但仍然有一些组织使用它。在SQL Server 2000中,日志文件经常会变得

非常大,占用大量磁盘空间。为了有效管理和清理日志文件,以下是一些

可以使用的方法。

1.设计合适的恢复模式

SQL Server 2000有三种恢复模式:完全恢复模式、大容量日志恢复

模式和简单恢复模式。对于需要恢复到特定时间点的组织,可以选择完全

或大容量日志恢复模式,但需要定期备份日志文件和清理旧的备份。对于

一些不需要恢复到特定时间点的组织,可以选择简单恢复模式,它会自动

清除日志文件。

2.定期备份日志文件

在完全恢复模式或大容量日志恢复模式下,定期备份日志文件非常重要。这样可以释放事务日志,使其不再继续增长。可以使用`BACKUPLOG`

命令来备份日志文件,并设置相应的计划任务以确保定期备份。

3.缩减日志文件

当执行一次日志备份后,`BACKUPLOG`命令可以触发事务日志的缩减。可以使用`DBCCSHRINKFILE`命令来缩减日志文件的大小,从而释放磁盘空间。但需要注意,缩减日志文件可能导致性能下降,因此需要在低峰期执行。

4.数据库挂起和启动

将数据库挂起并重新启动可以清除事务日志并释放磁盘空间。可以使用 `ALTER DATABASE [DatabaseName] SET ONLINE/OFFLINE` 命令来完成这个操作。挂起数据库会中断对数据库的访问,因此需要在低峰期执行。

5.自动备份和清理

使用SQL Server代理任务和T-SQL命令,可以创建计划任务来自动备份和清理日志文件。可以定期执行 `BACKUP LOG` 和 `DBCC SHRINKFILE` 命令,以确保日志文件的大小保持在合理的范围内。

sqlserver 清理日志语句

sqlserver 清理日志语句

sqlserver 清理日志语句

摘要:

1.引言

2.SQL Server 日志简介

3.清理日志的重要性

4.SQL Server 清理日志的语句

5.总结

正文:

SQL Server 清理日志语句是每个数据库管理员都需要掌握的技能之一。在SQL Server 中,日志文件是记录数据库操作的重要文件,包括所有对数据库的更改,如数据插入、更新、删除等操作,以及数据库管理员执行的所有SQL 语句。随着时间的推移,日志文件会变得越来越大,导致数据库性能下降。因此,定期清理日志文件是维护数据库的必要步骤。

SQL Server 提供了多种清理日志的语句,其中最常用的是`DBCC SQLPERF`和`DBCC LOGINFO`。`DBCC SQLPERF`用于清理数据库性能计数器,而`DBCC LOGINFO`用于查看日志文件的信息。

使用`DBCC SQLPERF`清理日志文件的语句如下:

```

DBCC SQLPERF("LOGSPACE", "数据库名", NULL, NULL)

```

使用`DBCC LOGINFO`查看日志文件的信息的语句如下:

```

DBCC LOGINFO(数据库名)

```

在执行这些语句之前,需要先备份数据库,以防止清理操作对数据库造成不可逆的损害。

总结起来,SQL Server 清理日志语句是维护数据库的重要步骤。通过定期清理日志文件,可以提高数据库性能,保证数据库的稳定性和可靠性。

SQL数据库日志检查、操作与查看等

SQL数据库日志检查、操作与查看等

SQL数据库日志文件已满,怎么删除--压缩日志及数据库文件大小/*--特别注意请按步骤进行,未进行前面的步骤,请不要做后面的步骤否则可能损坏你的数据库.一般不建议做第4,6两步第4步不安全,有可能损坏数据库或丢失数据第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复.--*/1.清空日志DUMP TRANSACTION 库名 WITH NO_LOG 2.截断事务日志:BACKUP LOG 数据库名 WITH NO_LOG3.收缩数据库文件(如果不压缩,数据库的文件不会减小企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了也可以用SQL语句来完成--收缩数据库DBCC SHRINKDATABASE(客户资料)--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfilesDBCC SHRINKFILE(1)4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行)a.分离数据库:企业管理器--服务器--数据库--右键--分离数据库b.在我的电脑中删除LOG文件c.附加数据库:企业管理器--服务器--数据库--右键--附加数据库此法将生成新的LOG,大小只有500多K或用代码: 下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。a.分离EXEC sp_detach_db @dbname = 'pubs'b.删除日志文件c.再附加EXEC sp_attach_single_file_db @dbname = 'pubs', @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf'5.为了以后能自动收缩,做如下设置:企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩"--SQL语句设置方式:EXEC sp_dboption '数据库名', 'autoshrink', 'TRUE' 6.如果想以后不让它日志增长得太大企业管理器--服务器--右键数据库--属性--事务日志--将文件增长限制为xM(x是你允许的最大数据文件大小)--SQL语句的设置方式:alter database 数据库名 modify file(name=逻辑文件名,maxsize=20)查看MSSQL数据库每个表占用的空间大小我在工作中碰到了一些问题,需要查看数据库表的大小,查询SQL Server联机从书得到如下语句:sp_spaceused显示行数、保留的磁盘空间以及当前数据库中的表所使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间。语法sp_spaceused [[@objname =] 'objname'][,[@updateusage =] 'updateusage']参数[@objname =] 'objname'是为其请求空间使用信息(保留和已分配的

SQLserver2008删除数据库日志

SQLserver2008删除数据库日志

SQLserver2008删除数据库⽇志

现象:当数据库事务⽇志满了,需要操作删除对应数据库的⽇志

处理⽅法:使⽤SQLserver数据库⼯具登录对应的数据库,操作以下语句

注意1:mssql4291828_db设置为对应数据库名称

USE [mssql4291828_db]

GO

ALTER DATABASE [mssql4291828_db] SET RECOVERY SIMPLE WITH NO_WAIT

GO

ALTER DATABASE [mssql4291828_db] SET RECOVERY SIMPLE

GO

USE [mssql4291828_db]

GO

--此处需要注意,并⾮所有数据库的⽇志⽂件名都是“数据库名_log”

DBCC SHRINKFILE (N'mssql4291828_db_Log' , 0,TRUNCATEONLY)

GO

USE [mssql4291828_db]

GO

ALTER DATABASE [mssql4291828_db] SET RECOVERY FULL WITH NO_WAIT

GO

ALTER DATABASE [mssql4291828_db] SET RECOVERY FULL

GO

注意2:如果不知道数据库⽇志⽂件名,可以执⾏以下语句,查询指定数据库(如:mssql4291828_db)的⽇志⽂件名称USE [mssql4291828_db]

GO

SELECT name FROM SYS.database_files WHERE type_desc='LOG'

SQL日志文件太大,清理方法

SQL日志文件太大,清理方法

SQL日志文件太大,清理方法 最佳答案方法1: 在查询分析仪里面运行下面代码: view plaincopy to clipboardprint?01.backup log dbname with NO_LOG 02.backup log dbname with TRUNCATE_ONLY 03.DBCC SHRINKDATABASE(dbname) backup log dbname with NO_LOG backup log dbname with TRUNCATE_ONLY DBCC SHRINKDATABASE(dbname) 方法2: 进入企业管理器,选中数据库 所有任务->分离数据库 到数据库文件的存放目录,将dbname_log.LDF文件删除,怕S的话可以拷出去 企业管理器->附加数据库,选dbname,这个时候你会看见日志文件这项是一个叉,不要紧继续,此时数据库就会提示你该数据库无日志是否创建一个新的,确定就是了 方法3: 进入企业管理器,选中数据库 所有任务->收缩数据库 SQL日志文件太大,清理方法 --压缩日志及数据库文件大小 /*--特别注意 请按步骤进行,未进行前面的步骤,请不要做后面的步骤,否则可能损坏你的数据库. 一般不建议做第4,6两步 第4步不安全,有可能损坏数据库或丢失数据 第6步如果日志达到上限,则以后的数据库处理会失败,在清理日志后才能恢复. --*/ 1.清空日志 DUMP TRANSACTION 库名 WITH NO_LOG 2.截断事务日志: BACKUP LOG 数据库名 WITH NO_LOG 3.收缩数据库文件(如果不压缩,数据库的文件不会减小 企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件 --选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了 --选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了 也可以用SQL语句来完成 --收缩数据库 DBCC SHRINKDATABASE(客户资料) --收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles DBCC SHRINKFILE(1) 4.为了最大化的缩小日志文件(如果是sql 7.0,这步只能在查询分析器中进行) a.分离数据库: 企业管理器--服务器--数据库--右键--分离数据库 b.在我的电脑中删除LOG文件 c.附加数据库: 企业管理器--服务器--数据库--右键--附加数据库 此法将生成新的LOG,大小只有500多K 或用代码: 下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。 a.分离 EXEC sp_detach_db @dbname = 'pubs' b.删除日志文件 c.再附加 EXEC sp_attach_single_file_db @dbname = 'pubs', @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf' 5.为了以后能自动收缩,做如下设置: 企业管理器--服务器--右键数据库--属性--选项--选择"自动收缩&q

SQLServer2008下日志清理方法(非dump语句)

SQLServer2008下日志清理方法(非dump语句)

SQLServer2008下⽇志清理⽅法(⾮dump语句)

每次看到暴涨的数据库⽇志就有些头⼤,于是乱搜⼀通找个办法把⽇志⼲掉,下次⼜头⼤,⼜搜半天,于是还是写篇blog,不⽤乱找了。

1.将数据库设置成简单模式

选择要收缩的数据库,点右键属性->选项,选择简单模式

2.选择任务->收缩->⽂件

3.选择⽇志

或者⽤如下语句

代码

USE [master]

GO

ALTER DATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT

GO

ALTER DATABASE DNName SET RECOVERY SIMPLE

GO

USE DNName

GO

DBCC SHRINKFILE (N'LogFileName' , 0,TRUNCATEONLY)

GO

USE [master]

GO

ALTER DATABASE DNName SET RECOVERY FULL WITH NO_WAIT

GO

ALTER DATABASE DNName SET RECOVERY FULL

GO

Server 2000要清理使⽤的是dump语句,但是在SQL ⾥,这个语句不管⽤了,如果⽇志⽂件很⼤,⽐如超过1G,就需要截断⼀下⽇志⽂件以加快sqlserver的运⾏速度,在SQL Server2008⾥,⽅法改为:

有数据库 xxdb 在 SQL Server 2008 下,⽇志⽂件已经超过1G。

以往使⽤BACKUP语句-BACKUP LOG xxdb WITH NO_LOG 已经失效,在查阅 MSDN 之后发现 MS 提供的标准截断⽇志语句已经变为了“BACKUP LOG 语句不指定 WITH COPY_ONLY”

清除SQLServer日志的方法

清除SQLServer日志的方法

一般的企业信息系统,应用微软的SQL SERVER 数据库,常会出现如下的问题:数据库不是很大,几百兆,但是数据库日志文件(.ldf)非常大,有10多个GB。这样的话,非常占用硬盘,而且如果需要恢复数据库备份的话,也是需要很大的硬盘空间才能够正常的进行恢复操作。

我见过的一般的方法都是外科手术的西医方法,直接缩小日志。

我所知道的常用方法如下:

第一种方式,清空日志。

1.打开查询分析器,输入命令DUMP TRANSACTION 数据库名WITH NO_LOG, 微软在sql server 2000后将不再支持DUMP 命令,可以改为LOAD TRANSACTION 数据库名WITH NO_LOG

2.再打开企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了。

同时选择数据库模式为==“简单模式”这样的收缩效果很好。收缩完毕后可以再次改回原来的模式

第二种方式,删除日志文件。

此方法有一定的风险性,因为SQL SERVER的日志文件不是即时写入数据库主文件的,如处理不当,会造成数据的损失。

1: 删除LOG

分离数据库企业管理器->服务器->数据库->右键->分离数据库

2:删除LOG文件

附加数据库企业管理器->服务器->数据库->右键->附加数据库

打开SQL管理控制台,找到数据库,在数据库名上点右键——所有任务——分离数据库,分离完数据库后将数据库原扩展名为.ldf的日志文件删掉,在数据库项目上点右键——所有任务——附加数据库,选择数据库原扩展名为.mdf的数据库主文件进行附加却可,附加时系统提示日志文件不存在,是否创建新的日志文件,点是创建一个1024K的新日志文件

sqlserver 自动收缩日志 原理

sqlserver 自动收缩日志 原理

sqlserver 自动收缩日志原理

SQL Server是一种关系型数据库管理系统,它使用了事务日志(也称为事务日志)来记录

数据库中的所有数据库更改。事务日志记录了数据库中发生的每个事务操作,包括插入、更新和删除等操作。日志文件是一个重要的组成部分,它在数据库恢复和冗余期间起着关键作用。如果日志文件不受控制地增长,它可能会耗尽磁盘空间,导致数据库无法执行事务,因此自动收缩日志是SQL Server数据库管理中的重要任务之一。

自动收缩日志是一种机制,它动态地减小日志文件的大小。它可以根据数据库的需求自动执行收缩操作,并释放日志文件中的未使用空间。自动收缩日志可以基于以下几个步骤来实现:

1. 日志截断:事务日志分为多个虚拟结构,称为日志截断。事务日志以循环方式使用,这意味着它可以分为多个虚拟结构。每个虚拟结构都包含了一系列的数据页,当一个虚拟结构用完时,它会被切换到下一个虚拟结构。为了实现日志收缩,数据库引擎需要确认实际使用的日志文件位置。这是通过截断事务日志来完成的。截断可以删除已提交的事务,以释放事务日志文件中的空间。

2. 日志备份:备份事务日志是另一个影响日志文件大小的重要因素。备份事务日志不仅会将日志文件刷新至硬盘,还会清除已提交的事务日志信息。这有助于减小日志文件的大小。定期备份事务日志是确保数据库的稳定性和安全性的重要措施之一。

3. 数据库恢复模式:SQL Server提供了三种数据库恢复模式:完全恢复模式、大容量恢复模式

和简单恢复模式。不同的恢复模式会影响事务日志的使用和管理。

SQL Server 2000数据库的事务日志文件过大,如何将其缩小?

SQL Server 2000数据库的事务日志文件过大,如何将其缩小?

SQL Server 2000数据库的事务日志文件过大,如何将其缩小?SQL, 数据库, Server, 日志, 事务在SQL Server中,所有对数据库执行的更新操作都会记录在数据库的事务日志文件中,除非将数据库设为可自动收缩的或手动的对数据库进行了收缩,否则事务日志文件将一直增长,直到达到事先设定的日志文件增长上限或用尽所有可用的磁盘空间。如果当前的数据库文件或日志文件过大,可以使用以下两个命令对其进行收缩:DBCC SHRINKDATABASE:收缩指定数据库的所有数据和日志文件的大小DBCC SHRINKFILE:收缩数据库的某个指定数据或日志文件的大小这两个命令可以释放数据库中的空闲空间,并将数据库或指定的数据库文件收缩到指定的大小,但收缩后的数据文件或日志文件的大小不会小于文件中现存的有效数据所占空间的大小。关于这两个命令的具体使用方法,可以参考SQL Server 2000联机丛书中的相应主题。另外,也可在SQL Server企业管理器中执行数据库收缩,同样是调用的以上两个命令,效果类似。在使用以上命令收缩日志文件的时候需要注意,已写入数据库但未被截断的事务日志记录是不会被收缩的,因为虽然这部分日志记录的信息已经写入数据库文件,但在使用事务日志备份进行数据库还原的时候,还将用到其中的信息。对于使用简单恢复模型的数据库,事务日志会在每次处理检查点(CheckPoint)时自动被截断。对于使用完全恢复模型或大容量日志记录恢复模型的数据库,事务日志只有在执行日志备份(BACKUP LOG)时才会被截断,这时事务日志中记录的信息被写入事务日志备份文件,而它们所占用的这部分空间被标记为可用(即被截断)。截断事务日志并不会使日志文件变小,但可以将其中的部分空间释放供以后写入新的日志记录使用。若要减少日志文件的物理大小,则要使用上面提到的DBCC SHRINKDATABASE和DBCC SHRINKFILE命令。在执行BACKUP LOG语句的时候,还可以使用WITH NO_LOG(或WITH TRUNCATE_ONLY,含义相同)参数,这时并不真正备份事务日志,而只是截断事务日志中的非活动部分(这和普通的BACKUP LOG语句作用相同)。这适合于剩余磁盘空间不够进行事务日志备份或不打算保留事务日志中的非活动部分用于数据库恢复的情况。为避免事务日志文件增长过快以致用尽所有磁盘空间的现象发生,一种办法是将数据库设为使用简单恢复模型,这样可以使SQL Server周期性的自动截断事务日志的非活动部分,并回收其占用的空间供以后写入事务日志记录使用。但这将使数据库无法利用事务日志备份还原到即时点,降低了数据库的

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

sql server日志文件总结及日志满的处理办法

交易日志(Transaction logs)是数据库结构中非常重要但又经常被忽略的部分。由于它并不像数据库中的schema那样活跃,因此很少有人关注交易日志。交易日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。对于任何每一个交易过程,交易日志都有非常全面的记录,根据这些记录可以将数据文件恢复成交易前的状态。从交易动作开始,交易日志就处于记录状态,交易过程中对数据库的任何操作都在记录范围,直到用户点击提交或后退后才结束记录。每个数据库都拥有至少一个交易日志以及一个数据文件。

出于性能上的考虑,SQL Server将用户的改动存入缓存中,这些改变会立即写入交易日志,但不会立即写入数据文件。交易日志会通过一个标记点来确定某个交易是否已将缓存中的数据写入数据文件。当SQL Server重启后,它会查看日志中最新的标记点,并将这个标记点后面的交易记录抹去,因为这些交易记录并没有真正的将缓存中的数据写入数据文件。这可以防止那些中断的交易修改数据文件。

维护交易日志

因为很多人经常遗忘交易日志,因此它也会给系统带来一些问题。随着系统的不断运行,日志记录的内容会越来越多,日志文件的体积也会越来越大,最终导致可用磁盘空间不足。除非日常工作中经常对日志进行清理,否则日志文件最终会侵占分区内的全部可用空间。日志的默认配置为不限容量,如果以这种配置工作,它就会不断膨胀,最终也会占据全部可用空间。这两种情况都会导致数据库停止工作。

对交易日志的日常备份工作可以有效的防止日志文件过分消耗磁盘空间。备份过程会将日志中不再需要的部分截除。截除的方法是首先把旧记录标记为非活动状态,然后将新日志覆盖到旧日志的位置上,这样就可以防止交易日志的体积不断膨胀。如果无法对日志进行经常性的备份工作,最好将数据库设置为"简单恢复模式"。在这种模式下,系统会强制交易日志在每次记录标记点时,自动进行截除操作,以新日志覆盖旧日志。

截除过程发生在备份或将旧标记点标为非活动状态时,它使得旧的交易记录可以被覆盖,但这并不会减少交易日志实际占用的磁盘空间。就算不再使用日志,它依然会占据一定的空间。因此在维护时,还需要对交易日志进行压缩。压缩交易日志的方法是删除非活动记录,从而减少日志文件所占用的物理硬盘空间。

通过使用DBCC SHRINKDATABASE语句可以压缩当前数据库的交易日志文件,DBCC SHRINKFILE语句用来压缩指定的交易日志文件,另外也可以在数据库中激活自动压缩操作。当压缩日志时,首先会将旧记录标记为非活动状态,然后将带有非活动标记的记录彻底删除。根据所使用的压缩方式的不同,你可能不会立即看到结果。在理想情况下,压缩工作应该选在系统不是非常繁忙的时段进行,否则有可能影响数据库性能。

恢复数据库

交易记录备份可以用来将数据库恢复到某一指定状态,但交易记录备份本身不足以完成恢复数据库的任务,还需要备份的数据文件参与恢复工作。恢复数据库时,首先进行的是数据文件的恢复工作。在整个数据文件恢复完成前,不要将其设为完成状态,否则交易日志就不会被恢复。当数据文件恢复完成,系统会通过交易日志的备份将数据库恢复成用户希望的

状态。如果在数据库最后一次备份后,存在多个日志文件的备份,备份程序会按照它们建立的时间依次将其恢复。

另一种被称为log shipping的过程可以提供更强的数据库备份能力。当log shipping 配置好后,它可以将数据库整个复制到另一台服务器上。在这种情况下,交易日志也会定期发送到备份服务器上供恢复数据使用。这使得服务器一直处于热备份状态,当数据发生改变时它也随之更新。另一个服务器被称作监视(monitor)服务器,可以用来监视按规定时间间隔发送的shipping信号。如果在规定时间内没有收到信号,监视服务器会将这一事件记录到事件日志。这种机制使得log shipping经常成为灾难恢复计划中使用的方案。

性能优化

交易日志对数据库有重要作用,同时它对系统的整体性能也有一定影响。通过几个选项,我们可以对交易日志的性能进行优化。由于交易日志是一个连续的磁盘写入过程,在这当中不会发生读取动作。因此将日志文件放在一个独立的磁盘,对优化性能有一定作用。

另一项优化措施与日志文件的体积有关。我们可以设置日志文件的体积不超过硬盘空间的百分之几,或者确定它的大小。如果将其设置的过大会浪费磁盘空间,而如果设置的过小则会强制记录文件不断尝试扩展,导致数据库性能下降。

事务日志文件Transaction Log File是用来记录数据库更新情况的文件,扩展名为ldf。

在SQL Server 7.0 和SQL Server 2000 中,如果设置了自动增长功能,事务日志文件将会自动扩展。

一般情况下,在能够容纳两次事务日志截断之间发生的最大数量的事务时,事务日志的大小是稳定的,事务日志截断由检查点或者事务日志备份触发。

然而,在某些情况下,事务日志可能会变得非常大,以致用尽空间或变满。通常,在事务日志文件占尽可用磁盘空间且不能再扩展时,您将收到如下错误消息:Error:9002, Severity:17, State:2

The log file for database '%.*ls' is full.

除了出现此错误消息之外,SQL Server 还可能因为缺少事务日志扩展空间而将数据库标记为SUSPECT。有关如何从此情形中恢复的其他信息,请参见 SQL Server 联机帮助中的“磁盘空间不足”主题。

另外,事务日志扩展可能导致下列情形:

·非常大的事务日志文件。

·事务可能会失败并可能开始回滚。

·事务可能会用很长时间才能完成。

·可能发生性能问题。

·可能发生阻塞现象。

原因

事务日志扩展可能由于以下原因或情形而发生:

·未提交的事务

·非常大的事务

·操作:DBCC DBREINDEX 和CREATE INDEX

·在从事务日志备份还原时

·客户端应用程序不处理所有结果

相关文档
最新文档