如何减弱,SQLServer日志清空语句

时间:2020-03-14 03:07来源:江苏十一选五手机版数据库
由于数据库日志增长被设置为“无限制”,所以时间一长日志文件必然会很大,一个400G的数据库居然有600G的LOG文件,严重占用了磁盘空间。由于主要是做OLAP,所以数据库本身不会有大

由 于数据库日志增长被设置为“无限制”,所以时间一长日志文件必然会很大,一个400G的数据库居然有600G的LOG文件,严重占用了磁盘空间。由于主要 是做OLAP,所以数据库本身不会有大变动,所以日志也就没有多少作用了,因此想办法把数据库日志文件收缩到很小或者删除。

 

SQL Server日志清空方法 在查询分析器中顺序执行以下三步,其中 databasename 为你的数据库文件名

网 上搜索相关解决方案后,得到的答案丰富多彩,但是真正管用的方案并不多,这里分享一个csdn上找到的方法。这个方法讲述了SQL Server 2005和SQL Server 2008在收缩数据库日志的不同之处,颇有帮助。同时,该方法的效率很高,收缩600G的日志到10M只花了不到30秒。

江苏十一选五手机版 1Tempdb 信息

sql2000日志清空

最后附上代码:

江苏十一选五手机版 2收缩 Tempdb 的方法 1

可以将jb51.ldf文件变得很小,方便备份数据库等,在sqlserver查询分析器中执行即可。复制代码 代码如下:DUMP TRANSACTION [jb51] WITH NO_LOGBACKUP LOG [jb51] WITH NO_LOGDBCC SHRINKDATABASE([jb51])

适用于SQL Server 2000的方法

江苏十一选五手机版 3收缩 Tempdb 的方法 2

1.清空日志:DUMP TRANSACTION [databasename] WITH NO_LOG 2.截断事务日志:BACKUPLOG [databasename] WITH NO_LOG 3.收缩数据库:DBCC SHRINKDATABASE([databasename]) 注:数据库名陈最好加上[]

DUMP TRANSACTION [jb51] WITH NO_LOGBACKUP LOG [jb51] WITH NO_LOGDBCC SHRINKDATABASE([jb51])

江苏十一选五手机版 4收缩 Tempdb 的方法 3

SQLServer数据库日志清理 清除sqlserver2005日志

其中jb51为数据库名

江苏十一选五手机版 5在使用 Tempdb 时执行 DBCC SHRINKDATABASE 或 DBCCSHRINKFILE 的结果

有时候当系统运行时间比较长的时候,我们把备份的数据库还原的时候发现,数据库中数据文件和日志文件变的好大,特别是日志文件。现在给大家介绍如何清理SQLServer数据库日志;有两种方法如下:

适用于SQL Server 2005的方法

江苏十一选五手机版 6参考

方法一:手动清除sqlserver2005日志

Backup Log [jb51] WITH no_logGODUMP TRANSACTION [jb51] WITH no_logGOUSE jb51 DBCC SHRINKFILE (2)GO

 

1.右键在清除日志的数据库,如“TestDB”,点击[江苏十一选五手机版,新建查询]2.输入以下SQL语句,其中“TestDB”是数据库名称 DUMP TRANSACTION TestDB WITH NO_LOG3.执行该SQL,成功后继续以下操作4.右键该数据库节点,点击[任务]

说明:由于SQL Server 2008对文件和日志管理进行了优化,所以以上语句在SQL2005中可以运行但在SQL2008中已经被取消。

概要

本文讨论将 tempdb 数据库收缩为小于其上次配置的大小的三种方法。第一种方法使您可以完全控制 tempdb 文件的大小,但它要求您重新启动 SQL Server。第二种方法将 tempdb 作为整体来收缩,但它具有某些限制,可能包括重新启动 SQL Server。第三种方法允许您收缩 tempdb 中的单个文件。最后两种方法要求在收缩操作过程中在 tempdb 数据库中不发生任何活动。

注意:如果您使用的是 SQL Server 2005,这些方法仍适用。不过,您应该使用 SQL Server Management Studio 而不是企业管理器和查询分析器来执行这些操作。

  • [收缩] - [文件]5.在弹出的“收缩文件”对话框中,将“文件类型”选为“日志”,将“收缩操作”选中“在释放未使用的空间前重新组织页”6.在“将文件收缩到”文本框中输入后面提示的最小大小的数值,点击[确定]即可。
USE[master]GOALTER DATABASE jb51 SET RECOVERY SIMPLE WITH NO_WAITGOALTER DATABASE jb51 SET RECOVERY SIMPLE --简单模式GOUSE jb51GODBCC SHRINKFILE (N'DNName_Log', 11, TRUNCATEONLY)GOUSE[master]GOALTER DATABASE jb51 SET RECOVERY FULL WITH NO_WAITGOALTER DATABASE jb51 SET RECOVERY FULL --还原为完全模式GO

Tempdb 信息

tempdb 是一个临时工作区。除其他用途外,SQL Server 还将 tempdb 用于:

显式创建的临时表的存储。
保存在查询处理和排序过程中创建的中间结果的工作表。
具体化的静态光标。

SQL Server 在 tempdb 事务日志中记录的信息只足够用于回滚事务,而不足以用于在数据库故障恢复过程中重新执行事务。这一特点提高了 tempdb 中 INSERT 语句的性能。另外,由于每次重新启动 SQL Server 时都会重新创建 tempdb,无需记录用于重新执行任何事务的信息。因此,没有任何要前滚或回滚的事务。当 SQL Server 启动时,通过使用 model 数据库的副本重新创建 tempdb,并将其重置为上次配置的大小。

默认情况下,tempdb 数据库配置为根据需要自动增长;因此,此数据库可能最终增长到大于所需的大小。简单地重新启动 SQL Server 会将 tempdb 的大小重置为上次配置的大小。配置的大小是用文件大小更改操作(如带有 MODIFY FILE 选项的 ALTER DATABASE 或者 DBCC SHRINKFILE 语句)设置的上次显式大小。本文说明您可以用来将 tempdb 收缩到小于其配置的大小的三种方法。

方法二:用工具软件SqlServer日志清除专家3.0,可对Sql Server 6.5到Sql Server 2005的各种版本的数据库日志的清除;其使用方法非常简单;SqlServer 日志清除专家绿色版 V3.0下载地址:

其中jb51为数据库名,DNName_Log为日志名,需要找一下,具体的说明可以参考这篇文章,也有图文方法

收缩 Tempdb 的方法 1

此方法要求您重新启动 SQL Server。

1. 停止 SQL Server。打开命令提示符,然后键入以下命令启动 SQL Server:

sqlservr -c -f

-c-f 参数使 SQL Server 以最小配置模式启动,让数据文件的 tempdb 大小为 1 MB,日志文件的 tempdb 为 0.5 MB。

注意:如果使用 SQL Server 命名实例,必须切换到适当的文件夹 (Program Files/Microsoft SQL Server/MSSQL$instance name/Binn),并使用 -s 开关 (-s%instance_name%)。
2. 用查询分析器连接到 SQL Server,然后运行下列 Transact-SQL 命令:
   ALTER DATABASE tempdb MODIFY FILE
   (NAME = 'tempdev', SIZE = target_size_in_MB) 
   --Desired target size for the data file

   ALTER DATABASE tempdb MODIFY FILE
   (NAME = 'templog', SIZE = target_size_in_MB)
   --Desired target size for the log file
                    
3. 通过在命令提示符窗口中按 Ctrl-C 停止 SQL Server,将 SQL Server 作为服务重新启动,然后验证 Tempdb.mdf 和 Templog.ldf 文件的大小。

此方法的局限是它只能对默认的 tempdb 逻辑文件 tempdevtemplog 进行操作。如果将其他文件添加到了 tempdb,您可以在将 SQL Server 作为服务重新启动后收缩它们。在启动过程中将重新创建所有 tempdb 文件;因此,它们是空的并可删除。要删除 tempdb 中的其他文件,请使用带有 REMOVE FILE 选项的 ALTER DATABASE 命令。

下载地址 //

这篇文章就介绍到这了,需要的朋友可以参考一下,希望大家以后多多支持脚本之家。

收缩 Tempdb 的方法 2

使用 DBCC SHRINKDATABASE 命令将 tempdb 数据库作为整体收缩。DBCC SHRINKDATABASE 接收参数 target_percent,该参数是数据库收缩后数据库文件中剩余可用空间的所需百分比。如果使用 DBCC SHRINKDATABASE,可能必须重新启动 SQL Server。

重要说明:如果运行 DBCC SHRINKDATABASE,则 tempdb 数据库不能正在发生其他活动。要确保在运行 DBCC SHRINKDATABASE 时其他进程无法使用 tempdb,必须以单用户模式启动 SQL Server。有关更多信息,请参考本文的在使用 Tempdb 时执行 DBCC SHRINKDATABASE 或 DBCCSHRINKFILE 的结果 一节。

1. 通过使用 sp_spaceused 存储过程确定 tempdb 中当前使用的空间。然后,计算剩余可用空间的百分比,它将用作 DBCC SHRINKDATABASE 的参数;该计算是基于所需数据库大小进行的。

注意:在某些情况下,您可能必须执行 sp_spaceused @updateusage=true 来重新计算使用的空间和获得更新的报告。有关 sp_spaceused 存储过程的更多信息,请参考 SQL Server 联机丛书。

请考虑以下示例:
假定 tempdb 有两个文件:主数据文件 (Tempdb.mdf) 和日志文件 (Tempdb.ldf),其大小分别为 100 MB 和 30 MB。假定 sp_spaceused 报告主数据文件包含 60 MB 的数据。还假定您要将主数据文件收缩到 80 MB。计算收缩后剩余可用空间的所需百分比,即 80 MB - 60 MB = 20 MB。现在,用 20 MB 除以 80 MB = 25%,这就是您的 target_percent。事务日志文件将据此进行收缩,从而在数据库收缩后剩下 25% 即 20 MB 的可用空间。
2. 用查询分析器连接到 SQL Server,然后运行下列 Transact-SQL 命令:
   dbcc shrinkdatabase (tempdb, 'target percent') 
   -- This command shrinks the tempdb database as a whole
                    

tempdb 数据库使用 DBCC SHRINKDATABASE 命令具有局限性。数据文件和日志文件的目标大小不能小于创建数据库时指定的大小,也不能小于用文件大小更改操作(如带有 MODIFY FILE 选项的 ALTER DATABASE 命令或 DBCC SHRINKFILE 命令)显式设置的上次大小。DBCC SHRINKDATABASE 的另一个限制是 target_percentage 参数的计算和它对当前使用的空间的依赖。

方法一操作起来相对麻烦一些,可是可以定制日志的大小,清理日志后其相应的数据库数据文件在也会变小,数据也不会丢失;方法二操作比较方便,可以把数据库中的日志文件清理到1M大小;

收缩 Tempdb 的方法 3

使用命令 DBCC SHRINKFILE 收缩单个 tempdb 文件。DBCC SHRINKFILE 比 DBCC SHRINKDATABASE 提供更多的灵活性,因为您可以对单个数据库文件使用它而不必影响属于同一数据库的其他文件。DBCC SHRINKFILE 接收 target size 参数,这是所需的数据库文件的最终大小。

重要说明:必须在 tempdb 数据库不发生任何活动时运行 DBCC SHRINKFILE 命令。要确保在执行 DBCC SHRINKFILE 时其他进程不能使用 tempdb,必须以单用户模式重新启动 SQL Server。有关 DBCC SHRINKFILE 的更多信息,请参见本文中在使用 Tempdb 时执行 DBCC SHRINKDATABASE 或 DBCCSHRINKFILE 的结果 一节。

1. 确定主数据文件 (tempdb.mdf)、日志文件 (templog.ldf) 和/或添加到 tempdb 的其他文件的所需大小。确保在这些文件中使用的空间小于或等于所需的目标大小。
2. 用查询分析器连接到 SQL Server,然后为需要收缩的特定数据库运行下列 Transact-SQL 命令:
   use tempdb
   go

   dbcc shrinkfile (tempdev, 'target size in MB')
   go
   -- this command shrinks the primary data file

   dbcc shrinkfile (templog, 'target size in MB')
   go
   -- this command shrinks the log file, look at the last paragraph.
                        

DBCC SHRINKFILE 的一个优点是它可以将文件大小减小到小于其原始大小。您可以对任何数据文件或日志文件执行 DBCC SHRINKFILE。DBCC SHRINKFILE 的一个局限是您无法使数据库小于 model 数据库的大小。

在 SQL Server 7.0 中,事务日志收缩是一个推迟操作,您必须执行日志截断和备份,以帮助进行数据库中的收缩操作。但是,默认情况下,tempdbtrunc log on chkpt 选项设置为“打开”(ON);这样,您就无需为该数据库执行日志截断。有关如何在 SQL Server 7.0 中收缩数据库事务日志的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

256650 () INF:如何收缩 SQL Server 7.0 事务日志

SQLServer数据库日志清理 清除sqlserver2008日志

在使用 Tempdb 时执行 DBCC SHRINKDATABASE 或 DBCCSHRINKFILE 的结果

当正在使用 tempdb 时,如果您尝试通过使用 DBCC SHRINKDATABASE 或 DBCC SHRINKFILE 命令收缩它,可能会收到与以下类型相似的多个一致性错误,并且收缩操作可能失败:

Server:Msg 2501, Level 16, State 1, Line 1 Could not find table named '1525580473'.Check sysobjects.

- 或 -

Server:Msg 8909, Level 16, State 1, Line 0 Table Corrupt:Object ID 1, index ID 0, page ID %S_PGID.The PageId in the page header = %S_PGID.

尽管错误 2501 可能不表示 tempdb 中的任何损坏,但它会导致收缩操作失败。与其不同,错误 8909 可能表示 tempdb 数据库中的损坏。应重新启动 SQL Server 来重新创建 tempdb 并清除一致性错误。但是,请记住像错误 8909 这样的物理数据损坏可能有其他原因,这包括输入/输出子系统问题。

SQL2008 的收缩日志 由于SQL2008对文件和日志管理进行了优化,所以以下语句在SQL2005中可以运行但在SQL2008中已经被取消:(SQL2005)

参考

SQL Server 联机丛书;主题:“DBCC SHRINKFILE”;“DBCC SHRINKDATABASE”


复制代码 代码如下:BackupLog DNName with no_loggodumptransaction DNName with no_loggoUSE DNName DBCC SHRINKFILE (2)Go

这篇文章中的信息适用于:
Microsoft SQL Server 2000 标准版
Microsoft SQL Server 7.0 标准版
Microsoft SQL Server 2000 64-bit Edition
Microsoft SQL Server 2005 Standard Edition
Microsoft SQL Server 2005 Developer Edition
Microsoft SQL 2005 Server Enterprise
Microsoft SQL 2005 Server Workgroup

(SQL2008):在SQL2008中清除日志就必须在简单模式下进行,等清除动作完毕再调回到完全模式。

方案一:完全命令模式

复制代码 代码如下:USE[master] GO ALTERDATABASE DNName SET RECOVERY SIMPLE WITH NO_WAIT GO ALTERDATABASE DNName SET RECOVERY SIMPLE --简单模式 GO USE DNName GO DBCC SHRINKFILE (N'DNName_Log' , 11, TRUNCATEONLY) GO USE[master] GO ALTERDATABASE DNName SET RECOVERY FULLWITH NO_WAIT GO ALTERDATABASE DNName SET RECOVERY FULL --还原为完全模式 GO

方案二:部分命令模式 + 任务-收缩-文件

ALTERDATABASE DNName SET RECOVERY SIMPLE --简单模式GO

右键-任务-收缩-文件-确定 下来数据库的日志只保留了1M

ALTERDATABASE DNName SET RECOVERY FULL --还原为完全模式

GO

优点:此清除日志所运行消耗的时间短,90GB的日志在分钟左右即可清除完毕,做完之后做个完全备份在分钟内即可完成。缺点: 不过此动作最好不要经常使用,因为它的运行会带来系统碎片。普通状态下LOG和DIFF的备份即可截断日志。此语句使用的恰当环境:当系统的日志文件异常增大或者备份LOG时间太长可能影响生产的情况下使用。

编辑:江苏十一选五手机版数据库 本文来源:如何减弱,SQLServer日志清空语句

关键词: