SQL SERVER 日志已满的处理方法

合集下载

SQL SERVER清除日志的四种方法

SQL SERVER清除日志的四种方法
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'
AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)
AND (@OriginalSize * 8 /1024) > @NewSize
BEGIN -- Outer loop.
SELECT @Counter = 0
SET NOCOUNT ON
DECLARE @LogicalFileName sysname,
@MaxMinutes INT,
@NewSize INT
USE tablename -- 要操作的数据库名
SELECT @LogicalFileName = 'tablename_log', -- 日志文件名
DBCC SHRINKFILE (@LogicalFileName, @NewSize)
EXEC (@TruncLog)
-- Wrap the log if necessary.
WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- time has not expired

sqlserver日志已满处理方法

sqlserver日志已满处理方法

sql server日志已满处理方法sql server日志已满处理方法学习2009-07-2615:42:33阅读323评论0字号:大中小SQL数据库日志文件太大,或者使用软件时提示日志已满的处理方法.sql出现这种题提示,有二种情况,一你的电脑存放数据库文件的盘符不是NTFS格式的,而是别的格式,如FAT32只支持一个文件最大4G,所以超过4G就没有办法再写文件,sql 就会提示日志文件已满.另外就是NTFS格式的,前台见一个卖服装的朋友店里数据库主文件只有100多M,而日志文件却有40G,幸亏是他的硬盘空间多,不然软件早不能用了.估计软件数据库设计的有问题.后来给他重新建了一个日志收银速度明显加快.一--在SQL查询分析器执行--按下边的步骤一步一步的做--删除日志前要先对以前的数据库进行备份(这一步必须做,已免数据出现丢失)--1、使数据库脱机use masterexec sp_Detach_db test,true--2、把对应的.ldf文件删除或改名--需手工做自己手工删除数据库文件的所在目录下的.ldf文件--3、加载数据文件exec sp_attach_single_file_db test,'D:\Program Files\Microsoft SQL Server\MSSQL\Data\test_Data.MDF'--4设置日志文件的增长方式alter database test set recovery simple二1.清空日志DUMP TRANSACTION库名WITH NO_LOG2.截断事务日志:BACKUP LOG数据库名WITH NO_LOG3.收缩数据库文件(如果不压缩,数据库的文件不会减小企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了--选择数据文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了也可以用SQL语句来完成--收缩数据库DBCC SHRINKDATABASE(客户资料)--收缩指定数据文件,1是文件号,可以通过这个语句查询到:select*from sysfilesDBCC SHRINKFILE(1)4.为了最大化的缩小日志文件(如果是sql7.0,这步只能在查询分析器中进行)a.分离数据库:企业管理器--服务器--数据库--右键--分离数据库b.在我的电脑中删除LOG文件c.附加数据库:企业管理器--服务器--数据库--右键--附加数据库此法将生成新的LOG,大小只有500多K或用代码:下面的示例分离pubs,然后将pubs中的一个文件附加到当前服务器。

清理 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. 修改日志文件的增长大小除了修改增长百分比外,还可以通过修改日志文件的增长大小来控制日志文件的大小。

将增长大小设置为一个合适的值,可以避免日志文件过大,减少磁盘空间的占用。

三、截断事务日志1. 利用 SQL Server Management Studio (SSMS) 进行截断通过使用 SSMS,可以对数据库的事务日志进行截断。

在 SSMS 中选择要截断的数据库,右键点击“任务”->“收缩”->“文件”,选择要收缩的文件类型为“日志”,即可完成事务日志的截断。

sql数据库日志已满的处理方式

sql数据库日志已满的处理方式

DBCC SHRINKDATABASE收缩指定数据库中的数据文件大小。

语法DBCC SHRINKDATABASE( database_name [ , target_percent ][ , { NOTRUNCATE | TRUNCATEONLY } ])参数database_name是要收缩的数据库名称。

数据库名称必须符合标识符的规则。

有关更多信息,请参见使用标识符。

target_percent是数据库收缩后的数据库文件中所要的剩余可用空间百分比。

NOTRUNCATE导致在数据库文件中保留所释放的文件空间。

如果未指定,将所释放的文件空间释放给操作系统。

TRUNCATEONLY导致将数据文件中的任何未使用的空间释放给操作系统,并将文件收缩到上一次所分配的大小,从而减少文件大小,而不移动任何数据。

不试图重新定位未分配页的行。

使用TRUNCATEONLY 时,忽略target_percentis。

注释Microsoft® SQL Server™可收缩:特定数据库的所有数据和日志文件。

执行DBCC SHRINKDATABASE。

一次一个特定数据库中的数据或日志文件。

执行DBCC SHRINKFILE。

DBCC SHRINKDATABASE 以每个文件为单位对数据文件进行收缩。

然而,DBCC SHRINKDATABASE 在对日志文件进行收缩时,看起来好像所有的日志文件都存在于一个连续的日志池中。

假设名为mydb 的数据库有两个数据文件和两个日志文件。

这些数据文件和日志文件大小都为10 MB。

第一个数据文件包含6 MB 数据。

对于每个文件,SQL Server 计算目标大小,即要收缩文件到的大小。

当用target_percent 指定DBCC SHRINKDATABASE 时,SQL Server 计算的目标大小是收缩后文件中的target_percent可用空间大小。

例如,如果指定按target_percent 为25 收缩mydb。

SQLServer日志过大处理(分离附加)

SQLServer日志过大处理(分离附加)

SQLServer日志过大处理
注意:需要在应用停服状态下进行操作,并做好数据库备份1.查看数据库属性,找到数据库文件路径
常见路径为SQLServer默认DATA目录
可以在对应路径看到这个数据库的MDF和LDF文件
2.右键选择需要处理的数据,选择分离,分离之后数据库会从管理界面消失,分离时需要
勾选如下选项
3.剪切过大的LDF文件至其他目录,或者直接删除
4.数据库位置右键,选择附加mdf文件,删除找不到的日志文件,附加之后,日志会重新
生成
附加完成之后,数据库会出现在管理界面
5.至此完成过大日志处理,新增日志较小。

可以启动服务继续使用。

sqlserver事务日志已满的几种解决方案

sqlserver事务日志已满的几种解决方案

sqlserver事务⽇志已满的⼏种解决⽅案⼀.删除⽇志⽂件:(不建议)⼆.⼿动收缩:1.数据库右键属性-选项-恢复模式-下拉选择简单-最后点击确定2.右键数据库-任务-收缩-⽂件类型-下拉选择⽇志-收缩操作-在释放未使⽤....(默认收缩到1MB)-最后点击确定3.最后别忘了回到第⼀步骤把恢复模式改为完整!三.⾃动收缩:1.为了以后能⾃动收缩,做如下设置:企业管理器–服务器–右键数据库–属性–选项–选择”⾃动收缩”QL语句设置⽅式:EXEC sp_dboption ‘数据库名’, ‘autoshrink’, ‘TRUE’2..如果想以后不让它⽇志增长得太⼤企业管理器–服务器–右键数据库–属性–事务⽇志–将⽂件增长限制为xM(x是你允许的最⼤数据⽂件⼤⼩)–SQL语句的设置⽅式:alter database 数据库名 modify file(name=逻辑⽂件名,maxsize=20)四.分离附加:分离主数据库-删除.ldf⽂件-附件数据库;五.使⽤sql语句:(可设置为计划)--将数据库设为简单模式。

⽇志⽂件⾃动断开。

alter database dbname set recovery simple--查看⽇志⽂件状况use dbnamedbcc shrinkfile('logname') --like XXXX_log--恢复数据库模式alter database dbname set recovery full六.备份⽇志:SQL Server 2008 先备份⽇志将⽇志截断.再⽤dbcc shrinkfile(⽇志⽂件,1024)收缩⽇志⽂件。

七.设置简单模式:设置为简单模式不记录⽇志;⼋.sql⾃动缩减⽇志:针对⽇志这个问题,建议⼿动写个⼩⼯具(SQL提供⾃动缩减⽇志的脚本写法),添加到任务计划中,定时执⾏!可以节省很多磁盘空间!。

SQL数据库日志文件容量超大解决方法

SQL数据库日志文件容量超大解决方法

问题:数据库达到160G,怎样处理?
原因:
1、S QLSERVER数据库,分为日志文件.ldf和主要文件.mdf,主要文件就是我们
的原始数据库,日志文件主要用于灾难恢复,记录了对数据库的所有操作的日志。

2、数据库大的原因为日志文件ykchr.log很大,主要文件才3G多,日志文件增
长策略为不限制增长,导致日志只追加不会覆盖,所以才会很大。

解决办法:
将日志文件中的日志全部清空,修改日志文件的增长策略,目前调整为到最大10G,超过10G自动从头覆盖。

也可以将日志文件大小最大限制为5G
步骤:
1、查看数据库中,确认哪个文件占用空间较大。

2、选择目标数据库,分离数据库,为了可以删除日志文件。

3、现在可以修改日志文件名。

3、重新附加数据库,找到mdf文件即可。

5、删除找不到的日志文件目录。

6、直接恢复数据库即可。

7、刷新,显示出加附加的数据库。

8、找到目标数据库,打开属性,限制日志文件最大容量5G。

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>):调整日志文件的大小。

- ALTER DATABASE <database_name> MODIFY FILE (NAME =<log_file_name>, FILEGROWTH = <new_growth>):调整日志文件的增长百分比。

3.使用事务日志备份和清除除了备份和恢复,SQL Server还提供了事务日志备份和清除功能。

SqlServer数据库提示“tempdb”的日志已满问题如何解决

SqlServer数据库提示“tempdb”的日志已满问题如何解决

SqlServer数据库提示“tempdb”的日志已满问题如何
解决
本文主要讲述了笔者在执行sql语句的过程中,遇到SqlServer数据库提示tempdb&rdquo;的日志已满问题。

请备份该数据库的事务日志以释放一些日志空间&rdquo;的解决过程,希望对大家有所帮助。

 执行sql 语句,中间没有用到临时表
 提示服务器: 消息9002,级别17,状态2,行1
 数据库‘tempdb’ 的日志已满。

请备份该数据库的事务日志以释放一些日志空间。

 网上找了下解决方案,大体是扩大临时库的日志文件的大小解决的
 解决过程:
 查看了下数据库的属性,是自动增长,不指定文件大小上限。

 在网上Google了很久,试了些方法都不行;数据库所在磁盘还有很大的可用空间,试着下重药了。

 直接把tempdb的数据文件和日志文件的大小改为3000M,。

SQL数据库日记文件满造成数据库不能保存数据的处理方法

SQL数据库日记文件满造成数据库不能保存数据的处理方法

SQL Server2000数据库收缩、分离与附加当日记文件储存满以后,会出现SQL数据库数据无法保存现象。

这就造成了我们在运行KJ2008软件的时候出现,数据库连接正常,但报表打印出现“SQL 2009-4-11数据无效”。

此时,首先应该对kj2006数据库进行手动收缩。

收缩不成功才考虑分离和附加。

一、收缩数据库1、点击“程序》Microsoft SQL Server》企业管理》”,打开企业管理器2、展开服务器组,然后展开服务器,选中要分离的数据库(kj2006)3、点击鼠标右键“所有任务》收缩数据库”,出现如下窗口4、点击“文件”,出现如下窗口选择:kj2006_log(日记文件),然后单独对日记文件进行收缩。

点:确定。

即完成对日记文件的收缩。

然后查看日记文件是否缩小。

SQL Server 2000允许分离数据库的数据和事务日志文件,然后将其重新附加到同一台或另一台服务器上。

分离数据库将从SQL Server 删除数据库,但是保证在组成该数据库的数据和事务日志文件中的数据库完好无损。

然后这些数据和事务日志文件可以用来将数据库附加到任何SQL Server 实例上,这使数据库的使用状态与它分离时的状态完全相同。

数据库分离和附加其实很简单,您即使是初次接触数据库,做起来也很容易。

一、分离数据库1、点击“程序》Microsoft SQL Server》企业管理》”,打开企业管理器2、展开服务器组,然后展开服务器,选中要分离的数据库3、点击鼠标右键“所有任务》分离数据库”,出现如下窗口4、点击确定,该选定的数据库就被分离(分离后的数据库和事务日志文件路径就是它们原先所在的路径)。

应注意,只有“使用本数据库的连接”数为0时,该数据库才能分离。

所以分离数据库时尽量断开所有对要分离数据库操作的连接,如果还有连接数据库的程序,会出现数据库的连接状态窗口,显示正在连接此数据库的机器以及名称,点击清除按钮将从服务器强制断开现有的连接。

SQLSERVER清理日志文件的方法

SQLSERVER清理日志文件的方法

SQLSERVER清理⽇志⽂件的⽅法
很多时候SQLSERVER的⽇志⽂件是不看的,但时间久了,够把磁盘撑爆,这时候就需要清理⽇志⽂件。

使⽤以下⽅法,在实际环境中经过测试,400G的⽇志⽂件1秒就被清理。

操作步骤
1. 将恢复模式改成“简单”
右键数据库 - 属性,切换到选项,将恢复模式修改为简单。

2. 收缩⽇志
右键数据库 - 任务 - 收缩 - ⽂件
确定后会发现,⽇志⽂件被迅速清理。

3. 命令操作
USE[master]
GO
ALTER DATABASE要清理的数据库名称SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE要清理的数据库名称SET RECOVERY SIMPLE --简单模式
GO
USE要清理的数据库名称
GO
DBCC SHRINKFILE (N'要清理的数据库名称_log' , 2, TRUNCATEONLY) --设置压缩后的⽇志⼤⼩为2M,可以⾃⾏指定GO
USE[master]
GO
ALTER DATABASE要清理的数据库名称SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE要清理的数据库名称SET RECOVERY FULL--还原为完全模式
GO
本⽂作者:iHey
本⽂链接:https:///iHey/p/11710759.html
版权声明:本作品采⽤知识共享署名-⾮商业性使⽤-禁⽌演绎 2.5 中国⼤陆进⾏许可。

sqlserver清理日志语句

sqlserver清理日志语句

sqlserver清理日志语句SQL Server 是一种常用的关系型数据库管理系统,它支持创建、更新和查询数据库中的数据。

在使用 SQL Server 进行数据库操作时,会生成一些日志来记录操作的详细信息。

然而,这些日志会占用大量的存储空间,因此我们经常需要对日志进行清理,以保证数据库的正常运行。

下面是一些常用的 SQL Server 清理日志的语句,我们可以根据需要选择执行相应的操作。

1. 查看数据库日志文件的占用情况使用以下语句可以查看数据库的日志文件及其占用的空间大小,以便评估需要清理的空间量。

```SQLUSE [数据库名];DBCC SQLPERF(logspace);```2. 备份日志并截断备份日志是一种常用的清理日志的方法,它将当前的日志备份到一个指定的位置,并且截断日志文件。

执行备份操作后,我们可以根据实际需求选择是否保留备份文件。

```SQLUSE [数据库名];BACKUP LOG [数据库名] TO DISK = '备份文件路径';DBCC SHRINKFILE (N'日志文件名', 0, TRUNCATEONLY);```3. 收缩日志文件如果我们不想备份日志文件,也可以通过收缩文件来清理日志。

收缩操作会重新组织日志文件,以减少其占用空间。

需要注意的是,收缩操作可能会影响数据库的性能,因此需要慎重使用。

```SQLUSE [数据库名];DBCC SHRINKFILE (N'日志文件名', 0);```4. 更改日志文件的增长设置我们还可以通过更改日志文件的增长设置来控制日志文件的大小。

可以调整日志文件的初始大小和自动增长量,以适应实际需求。

```SQLUSE [数据库名];ALTER DATABASE [数据库名]MODIFY FILE (NAME='日志文件名', SIZE=新的初始大小和增长量);```以上是一些常用的 SQL Server 清理日志的语句,可以根据需要选择合适的方法来清理数据库的日志。

sqlserver2008清除日志方法

sqlserver2008清除日志方法

sqlserver2008清除日志方法清除日志是SQL Server管理中的一个重要操作,可以帮助释放磁盘空间并提高数据库性能。

本文将介绍SQL Server 2008中清除日志的方法和操作步骤。

在SQL Server 2008中,可以通过备份日志和截断日志两种方式来清除日志。

下面将分别介绍这两种方法的具体步骤。

一、备份日志备份日志是清除日志的常用方法之一,它将已完成的事务日志备份到一个或多个备份介质上,并将这些已备份的日志从事务日志中删除。

备份日志的操作步骤如下:1. 打开SQL Server Management Studio,并连接到目标SQL Server 2008数据库实例。

2. 在对象资源管理器中,展开“数据库”节点,找到目标数据库。

3. 右键单击目标数据库,选择“任务”->“备份”。

4. 在“备份类型”下拉菜单中选择“日志”。

5. 在“目标”部分,选择备份日志的目标位置,可以是磁盘、磁带或网络共享路径。

6. (可选)在“备份集”选项卡中,可以指定备份集的名称和描述信息。

7. 点击“确定”开始备份日志。

备份日志完成后,已备份的日志将从事务日志中删除,从而实现了清除日志的目的。

二、截断日志截断日志是另一种清除日志的方法,它将已完成的事务日志从事务日志中删除,但不备份到其他介质上。

截断日志的操作步骤如下:1. 打开SQL Server Management Studio,并连接到目标SQL Server 2008数据库实例。

2. 在对象资源管理器中,展开“数据库”节点,找到目标数据库。

3. 右键单击目标数据库,选择“属性”。

4. 在“选项”页面中,找到“恢复模式”选项,将其设置为“简单”模式。

5. 点击“确定”保存更改。

6. 在对象资源管理器中,右键单击目标数据库,选择“任务”->“收缩”->“文件”。

7. 在“文件类型”下拉菜单中选择“日志”。

8. 点击“确定”开始截断日志。

SQL数据库日记文件满造成数据库不能保存数据的处理方法

SQL数据库日记文件满造成数据库不能保存数据的处理方法

SQL Server2000数据库收缩、分离与附加当日记文件储存满以后,会出现SQL数据库数据无法保存现象。

这就造成了我们在运行KJ2008软件的时候出现,数据库连接正常,但报表打印出现“SQL 2009-4-11数据无效”。

此时,首先应该对kj2006数据库进行手动收缩。

收缩不成功才考虑分离和附加。

一、收缩数据库1、点击“程序》Microsoft SQL Server》企业管理》”,打开企业管理器2、展开服务器组,然后展开服务器,选中要分离的数据库(kj2006)3、点击鼠标右键“所有任务》收缩数据库”,出现如下窗口4、点击“文件”,出现如下窗口选择:kj2006_log(日记文件),然后单独对日记文件进行收缩。

点:确定。

即完成对日记文件的收缩。

然后查看日记文件是否缩小。

SQL Server 2000允许分离数据库的数据和事务日志文件,然后将其重新附加到同一台或另一台服务器上。

分离数据库将从SQL Server 删除数据库,但是保证在组成该数据库的数据和事务日志文件中的数据库完好无损。

然后这些数据和事务日志文件可以用来将数据库附加到任何SQL Server 实例上,这使数据库的使用状态与它分离时的状态完全相同。

数据库分离和附加其实很简单,您即使是初次接触数据库,做起来也很容易。

一、分离数据库1、点击“程序》Microsoft SQL Server》企业管理》”,打开企业管理器2、展开服务器组,然后展开服务器,选中要分离的数据库3、点击鼠标右键“所有任务》分离数据库”,出现如下窗口4、点击确定,该选定的数据库就被分离(分离后的数据库和事务日志文件路径就是它们原先所在的路径)。

应注意,只有“使用本数据库的连接”数为0时,该数据库才能分离。

所以分离数据库时尽量断开所有对要分离数据库操作的连接,如果还有连接数据库的程序,会出现数据库的连接状态窗口,显示正在连接此数据库的机器以及名称,点击清除按钮将从服务器强制断开现有的连接。

sqlserver日志文件总结及充满处理

sqlserver日志文件总结及充满处理

sqlserver日志文件总结及充满处理第一篇:sqlserver日志文件总结及充满处理sqlserver日志文件总结及充满处理文章来源:sqlserver论坛作者:hansbj交易日志(Transaction logs)是数据库结构中非常重要但又经常被忽略的部分。

由于它并不像数据库中的schema那样活跃,因此很少有人关注交易日志。

交易日志是针对数据库改变所做的记录,它可以记录针对数据库的任何操作,并将记录结果保存在独立的文件中。

对于任何每一个交易过程,交易日志都有非常全面的记录,根据这些记录可以将数据文件恢复成交易前的状态。

从交易动作开始,交易日志就处于记录状态,交易过程中对数据库的任何操作都在记录范围,直到用户点击提交或后退后才结束记录。

每个数据库都拥有至少一个交易日志以及一个数据文件。

出于性能上的考虑,SQL Server将用户的改动存入缓存中,这些改变会立即写入交易日志,但不会立即写入数据文件。

交易日志会通过一个标记点来确定某个交易是否已将缓存中的数据写入数据文件。

当SQL Server重启后,它会查看日志中最新的标记点,并将这个标记点后面的交易记录抹去,因为这些交易记录并没有真正的将缓存中的数据写入数据文件。

这可以防止那些中断的交易修改数据文件。

维护交易日志因为很多人经常遗忘交易日志,因此它也会给系统带来一些问题。

随着系统的不断运行,日志记录的内容会越来越多,日志文件的体积也会越来越大,最终导致可用磁盘空间不足。

除非日常工作中经常对日志进行清理,否则日志文件最终会侵占分区内的全部可用空间。

日志的默认配置为不限容量,如果以这种配置工作,它就会不断膨胀,最终也会占据全部可用空间。

这两种情况都会导致数据库停止工作。

对交易日志的日常备份工作可以有效的防止日志文件过分消耗磁盘空间。

备份过程会将日志中不再需要的部分截除。

截除的方法是首先把旧记录标记为非活动状态,然后将新日志覆盖到旧日志的位置上,这样就可以防止交易日志的体积不断膨胀。

SQLServer清理日志文件方法案例详解

SQLServer清理日志文件方法案例详解

SQLServer清理日志文件方法案例详解
这篇文章主要介绍了SQLServer清理日志文件方法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
很多时候SQLSERVER的日志文件是不看的,但时间久了,够把磁盘撑爆,这时候就需要清理日志文件。

使用以下方法,在实际环境中经过测试,400G的日志文件1秒就被清理。

操作步骤
1. 将恢复模式改成“简单”
右键数据库 - 属性,切换到选项,将恢复模式修改为简单。

2. 收缩日志
右键数据库 - 任务 - 收缩 - 文件
确定后会发现,日志文件被迅速清理。

3. 命令操作
USE [master]
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE --简单模式
GO
USE 要清理的数据库名称
GO
DBCC SHRINKFILE (N'要清理的数据库名称_log' , 2, TRUNCATEONLY) --设置压缩后的日志大小为2M,可以自行指定
GO
USE [master]
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE 要清理的数据库名称 SET RECOVERY FULL --还原为完全模式
到此这篇关于SQLServer清理日志文件方法案例详解的文章就介绍到这了。

数据库事务日志已满解决方法-删除侠客站群数据库日志文件

数据库事务日志已满解决方法-删除侠客站群数据库日志文件

数据库事务日志已满解决方法-删除侠客站群数据库日志文件
大家在使用侠客站群V3的时候有时会提示事务日志已满,或者,可以看到存放库的那个磁盘越来越小,这是因为数据库的日志文件占用了大量的磁盘空间,如果觉得磁盘空间不足,想删除数据库的日志文件,即log后缀的文件,我们这里给大家介绍分离附加的方式来删除数据库的日志文件
该方法对SQL 2005和SQL 2008均有效
1. 开始--程序进入Microsoft SQL Server 2008/2005 然后点击SQL Server Management Studio 进入SQL管理登陆点击确定,进入数据库管理面板
2.点击“数据库”(或者点前面的加号),找到自己初始化的数据库,侠客站群默认使用的为V3DBS ,选中V3DBS后点击右键,选择任务,然后选择分离。

3.出现选择要分离的数据库之后,记得勾选“删除链接”,然后点击确定
4.找到自己当初初始化数据库时存放的位置,然后删除v3dbs_1.ldf 这个文件,切记是删除ldf后缀的文件,删错了数据就没了
5.同样在数据库管理面板中右键点击数据库,选择附加。

6.进入附加界面后点击添加按钮,找到自己数据库存放的位置(这个时候日志文件已经在第四步删除过了),选中数据库后点击确定,会显示需要附加的数据库信息
7.删除数据库信息里的ldf文件,如果不删除,就会提示附加数据库出错,因为找不到日志文件。

在数据库的相信信息里可以看到提示,找不到日志,我们用鼠标选中那一行,然后点击下方的删除按钮删除
8.删除后点击下方的确定按钮即可成功附加,数据库会自动创建新的日志文件。

附加完成之后,就可以去重新打开侠客站群继续正常使用啦!。

sqlserver 清理日志语句

sqlserver 清理日志语句

sqlserver 清理日志语句摘要:1.引言2.SQL Server 日志概述3.清理日志的必要性4.SQL Server 日志清理策略5.清理日志的SQL 语句6.总结正文:SQL Server 清理日志语句在SQL Server 中,日志文件是非常重要的组成部分,用于记录数据库的操作过程。

然而,随着数据库操作的不断进行,日志文件会不断增长,导致系统性能下降。

因此,定期清理日志文件是维护数据库稳定运行的重要措施之一。

SQL Server 日志概述SQL Server 日志分为两种类型:事务日志和数据日志。

事务日志记录数据库中所有的事务操作,而数据日志记录数据页的变化。

这两种日志共同保证了数据库的完整性和可恢复性。

清理日志的必要性随着日志文件的不断增长,会占用大量的磁盘空间,影响数据库的性能。

此外,过多的日志文件还会导致备份和恢复操作变得复杂和耗时。

因此,定期清理日志文件是十分必要的。

SQL Server 日志清理策略SQL Server 提供了多种日志清理策略,包括:1.自动清理:SQL Server 会自动删除不需要的日志文件。

默认情况下,事务日志文件在事务提交后保留7 天,数据日志文件在数据页发生变化后保留10 分钟。

2.手动清理:管理员可以通过执行SQL 语句手动清理日志文件。

例如,可以使用`BACKUP LOG`语句备份事务日志,然后使用`DROP LOG`语句删除事务日志;使用`DBCC SHRINKFILE`语句收缩数据日志文件。

清理日志的SQL 语句以下是一些常用的清理日志的SQL 语句:1.备份事务日志:```BACKUP LOG database_name```2.删除事务日志:```DROP LOG database_name```3.收缩数据日志文件:```DBCC SHRINKFILE (database_name, log_file_name)```总结SQL Server 日志文件对于数据库的运行至关重要,但过大的日志文件会影响系统性能。

SQLServer系统缓冲区空间不足或队列已满(错误:10055)

SQLServer系统缓冲区空间不足或队列已满(错误:10055)

SQLServer系统缓冲区空间不⾜或队列已满(错误:10055)最近数据库连接总隔段时间出现provider: TCP 提供程序, error: 0 - 由于系统缓冲区空间不⾜或队列已满,不能执⾏套接字上的操作。

的错误。

但这并不是SQL Server服务本⾝导致了此问题,实际上是来⾃ Windows系统,由机器的内存或TCP端⼝问题导致。

我这⾥是由于连接过多,导致端⼝耗尽(根据操作系统的报错来排查)。

已经知道问题根本原因之后,那么解决问题就变得简单了。

Windows 2008 以后,微软遵从国际标准,动态端⼝的数量调整为16384个 (从49152起始,到65536结束),如果服务器对外有⼤量连接,⽽TCP默认的Time Wait Delay时间为2分钟这可能导致端⼝耗尽。

解决⽅法如下:以管理员⾝份打开CMD,运⾏如下命令:netsh interface ipv4 show tcpstatsnetsh int ipv4 show dynamicport tcp查看⼀下,是否端⼝耗尽,⽬前端⼝数量是多少,如果确认端⼝耗尽就需要增⼤端⼝数量来解决。

2、增⼤动态端⼝数量netsh int ipv4 set dynamicport tcp start=1025 num=60000其中1025是起始端⼝号,num为数量,上述命令意思为从1025开始的60000个端⼝,到61025结束。

注:该步骤⽆需重启机器, ⽴即⽣效3、降低Time Wait时间,最低为30秒打开注册表,定位到 HKLM/SYSTEM/CurrentControlSet/Services/Tcpip/Parameters新增键值 TcpTimedWaitDelay,类型REG_DWORD , 设置为⼗进制30注:修改后重启⽣效以上是对ipv4下的tcp协议操作,其他协议命令如下:netsh int ipv4 show dynamicport tcpnetsh int ipv4 show dynamicport udpnetsh int ipv6 show dynamicport tcpnetsh int ipv6 show dynamicport udp--modify 2021/12/14、最近还是发现会出现此类问题,此时需要检查⽂件句柄。

快速清除SQLServer日志的两种方法

快速清除SQLServer日志的两种方法

快速清除SQLServer日志的两种方法日志文件满而造成SQL数据库无法写入文件时,可用两种方法:第一种方法:清空日志。

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

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

1: 删除LOG分离数据库企业管理器->服务器->数据库->右键->分离数据库2:删除LOG文件附加数据库企业管理器->服务器->数据库->右键->附加数据库此法生成新的LOG,大小只有450多KB。

注意:建议使用第一种方法。

如果以后,不想要它变大。

SQL2000下使用:在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。

或用SQL语句:2000中即故障恢复模型选择为简单模型)当执行CHECKPOINT 命令时如果事务日志文件超过其大小的70% 则将其内容清除在开发数据库时时常将此选项设置为True Auto shrink定期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的25%时,系统将会自动缩减文件使其未用空间等于25% 当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将Truncate log on checkpoint 选项设为True 时才能进行。

注意:一般立成建立的数据库默认属性已设好,但碰到意外情况使数据库属性被更改,请用户清空日志后,检查数据库的以上属性,以防事务日志再次充满。

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

SQL SERVER 日志已满的处理方法(转)
事务日志文件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
·在从事务日志备份还原时
·客户端应用程序不处理所有结果
·查询在事务日志完成扩展之前超时,您收到假的“Log Full”错误消息
·未复制的事务
解决方法
日志文件满而造成SQL数据库无法写入文件时,可用两种方法:
一种方法:清空日志。

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

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

1: 删除LOG
分离数据库企业管理器->服务器->数据库->右键->分离数据库
2:删除LOG文件
附加数据库企业管理器->服务器->数据库->右键->附加数据库
此法生成新的LOG,大小只有500多K。

注意:建议使用第一种方法。

如果以后,不想要它变大。

SQL2000下使用:
在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。

或用SQL语句:
alter database 数据库名set recovery simple
另外,如上图中数据库属性有两个选项,与事务日志的增长有关:
Truncate log on checkpoint
(此选项用于SQL7.0,SQL 2000中即故障恢复模型选择为简单模型)
当执行CHECKPOINT 命令时如果事务日志文件超过其大小的70% 则将其内容清除在开发数据库时时常将此选项设置为True
Auto shrink
定期对数据库进行检查当数据库文件或日志文件的未用空间超过其大小的25%时,系统将会自动缩减文件使其未用空间等于25% 当文件大小没有超过其建立时的初始大小时不会缩减文件缩减后的文件也必须大于或等于其初始大小对事务日志文件的缩减只有在对其作备份时或将Truncate log on checkpoint 选项设为True 时才能进行。

注意:一般新建立的数据库默认属性已设好,但碰到意外情况使数据库属性被更改,请用户清空日志后,检查数据库的以上属性,以防事务日志再次充满。

/***************************************/
今天早上一看服务器硬盘没有空间了,细查数据库日志达18G 运行上次在网上找的文章修改数据库日志大小,,提示”数据库city日志已满。

请备份该数据库的事务日志以释放一些日志空间。

” 网上查了下相关资料,找到下面这个最好用的,把原来的18g数据库日志文件压缩到了100M 效果非常明显.(本人只试过了前三步就OK了,后面的方法未验证)
–压缩日志及数据库文件大小
/*–特别注意
请按步骤进行,未进行前面的步骤,请不要做后面的步骤
否则可能损坏你的数据库.
–*/
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 Serv er\MSSQL\Data\pubs.mdf‟
5.为了以后能自动收缩,做如下设置:
企业管理器–服务器–右键数据库–属性–选项–选择”自动收缩”
–SQL语句设置方式:
EXEC sp_dboption …数据库名‟,…autoshrink‟,…TRUE‟
6.如果想以后不让它日志增长得太大
企业管理器–服务器–右键数据库–属性–事务日志
–将文件增长限制为xM(x是你允许的最大数据文件大小)
–SQL语句的设置方式:
alter database 数据库名modify file(name=逻辑文件名,maxsize=20)。

相关文档
最新文档