SqlServer压缩数据库日志

declare @dbName varchar(20)--数据库名称
declare @dbNamelog varchar(20)--数据库日志文件名称

--替换成自己的文件名称
select @dbName=‘dbname‘
select @dbNamelog=‘dbname_log‘

declare @sql nvarchar(2000)

set @sql=‘

USE ‘+@dbName+‘

ALTER DATABASE ‘+@dbName+‘ SET RECOVERY SIMPLE WITH NO_WAIT

ALTER DATABASE ‘+@dbName+‘ SET RECOVERY SIMPLE

USE ‘+@dbName+‘

DBCC SHRINKFILE (N‘‘‘+@dbNamelog+‘‘‘ , 11, TRUNCATEONLY)

USE ‘+@dbName+‘

ALTER DATABASE ‘+@dbName+‘ SET RECOVERY FULL WITH NO_WAIT

ALTER DATABASE ‘+@dbName+‘ SET RECOVERY FULL

SELECT file_id, name FROM sys.database_files‘

exec(@sql)

主要语法如下:

DBCC SHRINKFILE
    file_name | file_id }
        { [ ,target_size ]
            | [ , { EMPTYFILE | NOTRUNCATE | TRUNCATEONLY } ] 
        }
    )

参数

file_name

是已收缩文件的逻辑名称。文件名必须符合标识符的规则。

file_id

是要收缩的文件的标识 (ID) 号。若要获得文件 ID,请使用 FILE_ID 函数或在当前数据库中搜索 sysfiles

target_size

是用兆字节表示的所要的文件大小(用整数表示)。如果没有指定,DBCC SHRINKFILE 将文件大小减少到默认文件大小。

EMPTYFILE

将所有数据从指定文件中迁移到同一文件组中的其它文件

NOTRUNCATE

导致将释放的文件空间保留在文件中。

TRUNCATEONLY

导致文件中的任何未使用的空间释放给操作系统,并将文件收缩到上一次分配的大小,从而减少文件大小,而不移动任何数据。不尝试将行重新定位到未分配页。如果使用 TRUNCATEONLY,将忽略 target_size

转至:https://www.cnblogs.com/wangqiang3311/p/7687073.html

原文地址:https://www.cnblogs.com/himmy/p/9927996.html

时间: 2024-08-14 11:21:29

SqlServer压缩数据库日志的相关文章

SQL2008如何清空压缩数据库日志

SQL2008如何清空压缩数据库日志 编写人:左丘文 2015-4-10 近期在给一系统初始化资料时,不断的导入导出,因此一不小心,就将数据的SQL(sql2008R2)的是日志档弄得比数据库还大,给系统部署带来麻烦.因此想办法能否快速的将日志文件缩小到令人满意的504K. 今天在这里,我想与大家一起分享一下SQL2008中如何清空日志文档,在此做个小结,以供参考.有兴趣的同学,可以一同探讨与学习一下,否则就略过吧.   1.         采用我之前在SQL2005中的方法,发现已不能正常运

SQL Server 2005/2008压缩数据库日志的方法

适用于SQL Server 2005的方法 1 Backup Log DNName WITH no_log 2 GO 3 DUMP TRANSACTION DNName WITH no_log 4 GO 5 USE DNName 6 DBCC SHRINKFILE (2) 7 GO 说明:由于SQL Server 2008对文件和日志管理进行了优化,所以以上语句在SQL2005中可以运行但在SQL2008中已经被取消. 适用于SQL Server 2008的方法 1 USE [master] 2

SQL Server 2008删除或压缩数据库日志的方法

2010-09-20 20:15 由 于数据库日志增长被设置为“无限制”,所以时间一长日志文件必然会很大,一个400G的数据库居然有600G的LOG文件,严重占用了磁盘空间.由于主要 是做OLAP,所以数据库本身不会有大变动,所以日志也就没有多少作用了,因此想办法把数据库日志文件收缩到很小或者删除. 网 上搜索相关解决方案后,得到的答案丰富多彩,但是真正管用的方案并不多,这里分享一个csdn上找到的方法.这个方法讲述了SQL Server 2005和SQL Server 2008在收缩数据库日志

sqlserver 删除数据库日志

1.收缩文件 USE UserDB; GO DBCC SHRINKFILE (DataFile1, 7); GO 会导致索引碎片,不要经常收缩,除非有特定要求,否则不要将 AUTO_SHRINK 数据库选项设置为 ON.收缩后建议重新生成文件的索引2.删除 USE master; GO ALTER DATABASE AdventureWorks2012 REMOVE FILE test1dat4; GO

ms sqlserver 清除数据库日志脚本

USE [master] GO ALTER DATABASE F360DW SET RECOVERY SIMPLE WITH NO_WAIT GO ALTER DATABASE F360DW SET RECOVERY SIMPLE --简单模式 GO USE F360DW GO DBCC SHRINKFILE (N'F360DW_log' , 11, TRUNCATEONLY) /* --这里的DNName_Log 如果不知道在sys.database_files里是什么名字的话,可以用以下注释

带镜像的数据库日志压缩方案

带有镜像的数据库的压缩,如果有些情况没有按照步骤,可能不能将数据库压缩 1:  backup log BACKUP LOG [database name] TO  DISK = N'path\txxx.bak' WITH NOFORMAT, NOINIT,  NAME = database name-Transaction Log  Backup',  SKIP, NOREWIND, NOUNLOAD,  STATS = 102: 确保同步完成 注意确保 mirror 状态是已经同步完成. 3:

sql server压缩数据库和日志文件

DBCC SHRINKDATABASE 功能:压缩数据库 用法:DBCC SHRINKDATABASE tb_115sou_com 注意:只有产生许多未使用空间的操作(如截断表或删除表操作)后,执行收缩操作最有效,产生碎片较少.其他情况请勿执行,因为虽然释放了空间,但是会产生大量碎片 例子:我的数据库本来5g,执行后变成了2g,有没有很爽?doc.115sou.com DBCC SHRINKFILE 功能:压缩数据库文件 用法:DBCC SHRINKFILE (N'tb_115sou_com_l

SqlServer 数据库日志无法收缩处理过程

今天按常用方法收缩一个测试用的数据库日志,发现没法收缩! dbcc sqlperf(logspace) USE [dbname] GO ALTER DATABASE [dbname] SET RECOVERY SIMPLE WITH NO_WAIT GO DBCC SHRINKFILE (N'dbname_log' , 0, TRUNCATEONLY) GO DBCC SHRINKDATABASE(N'dbname' ) GO 日志大小还是一样. DBCC OPENTRAN 查看是否打开的事务.

数据库日志文件(收缩管理)

sqlserver数据库的日志文件其实是由很多个逻辑上的日志文件组成,我们可以通过命令看一下数据库日志文件 ?可以看到的是sqlserver数据库日志文件是由很多文件组成的,当数据库日志文件已满的时候,自动增长就会生成新的文件,这些文件叫做VLF(虚拟日志文件),所以说在这个层面上来说,我们可以简单的把数据库日志理解为一列火车,一节一节的车厢理解为数据库的虚拟日志文件,当然如果不够存的下事务日志的时候,就要扩充,就是加一个火车厢. 所以说数据库事务日志其实是由很多个独立的虚拟事务日志文件组成的,