❶ 怎样压缩数据库的日志文件
具体方法有3种。
方法一:
第一步:
backup
log
database_name
with
no_log
或者
backup
log
database_name
with
truncate_only
--
no_log和truncate_only是在这里是同义的,随便执行哪一句都可以。
第二步:
1.收缩特定数据库的所有数据和日志文件,执行:
dbcc
shrinkdatabase
(database_name,[,target_percent])
--
database_name是要收缩的数据库名称;target_percent是数据库收缩后的数据库文件中所要的剩余可用空间百分比。
2.收缩一次一个特定数据库中的数据或日志文件,执行
dbcc
shrinkfile(file_id,[,target_size])
--
file_id是要收缩的文件的标识
(ID)
号,若要获得文件
ID,请使用
FILE_ID
函数或在当前数据库中搜索
sysfiles;target_size是用兆字节表示的所要的文件大小(用整数表示)。如果没有指定,dbcc
shrinkfile
将文件大小减少到默认文件大小。两个dbcc都可以带上参数notruncate或truncateonly,具体意思查看联机帮助.
方法二:
第一步:
先备份整个数据库以备不测
。
第二步:
备份结束后,在Query
Analyzer中执行如下的语句:
exec
sp_detach_db
yourDBName,true
--卸除这个DB在MSSQL中的注册信息
第三步:
到日志的物理文件所在的目录中去删除该日志文件或者将该日志文件移出该目录
第四步:
在Query
Analyzer中执行如下的语句:
exec
sp_attach_single_file_db
yourDBName,'
d:\mssql\data\yourDBName_data.mdf
'
--以单文件的方式注册该DB,如果成功则MSSQL将自动为这个DB生成一个500K的日志文件。
方法三:
1.
进入企业管理器,选中数据库,比如demo
2.
所有任务->分离数据库
3.
到数据库文件的存放目录,将MuOnline_log.LDF文件删除,以防万一,你可以拷出去
4.
企业管理器->附加数据库,选muonline,这个时候你会看见日志文件这项是一个叉,不要紧,继续,此时数据库就会提示你该数据库无日志是否创建一个新的,确定就是了。
5.
记得数据库重新附加后用户要重新设置一下。
如果以后,不想要它变大:
SQL2000下使用:
在数据库上点右键->属性->选项->故障恢复-模型-选择-简单模型。
或用SQL语句:
alter
database
数据库名
set
recovery
simple
❷ sql数据库日志文件过大怎么办
日志文件太大,使其减小的方法。
在打开SQL Server Management Studio并正常联接SQL服务器后,运行下面的三行:
( 注意将dbName代换为你的数据库名。)
backup log dbName with NO_LOG
backup log dbName with TRUNCATE_ONLY
DBCC SHRINKDATABASE(dbName)
注意,在SQL 2008之后的版本以上方法无效,需将数据库设为简单模式后再进行收缩。
此外,在SQL Server Management Studio中,以视窗方法操作也可以,操作步骤:
第一步:截断数据库日志,运行代码:
BACKUP LOG 要收缩的数据库名 WITH NO_LOG
第二步:收缩数据库日志文件:
1. 选择要收缩的数据库,点右键选择任务-收缩-文件
2. 在弹出的页面中,选择文件类型为日志
3.点确定。
❸ SQL Server 快速清除日志文件的方法
SQL Server 2000快速清除日志文件的方法
SQL Server 2000 数据库日志太大!
如何清理SQL Server 2000的日志呢?
如何压缩SQL Server 2000的日志呢?
如何让SQL Server 2000的日志变小呢?
据我所知,办法有很多很多,总结起来算有3类吧:
1、点几下鼠标,用SQL Server 2000管理工具中的企业管理器即可实现,待会儿详解;
2、用SQL语句,在SQL Server 2000管理工具中的查询分析器可以实现,此法高级人士喜欢用;
3、用第三方工具实现,原理嘛,我觉得应该是用SQL语句来实现的,这方法好,简单易用,网上不乏精品工具,待会儿介绍一款。
一、现在我们详细描述一下如何用企业管理器清理SQL 2000的日志:
1、打开企业管理器,右击要处理的数据库--》属性--》选项--》故障还原,选“简单”--》确定。如图:
2、右击要处理的数据库--》所有任务--》收缩数据库--》什么也不动,默认第一个是0%,其它两个未选中,点确定--》如果您以前数据库日志文件大于1M那么现在再看看,是不是只有1M了呢。
3、操作完后--》按第一步,把“故障还原”,选“完全”,传说中SQL Server 2000 有自动还原功能,说是如果非法关机等因素造成数据丢失可以自动回滚,另外可以用程序来实现操作回滚,所以最好是让故障还原是“完全”。
4、这样便实现了“SQL Server 2000 数据库日志太大!如何管理,清除,变小,压缩它”中的清除,变小,压缩了,至于怎么管理,自己看着办吧,我一般只会用到这些,再有深入研究的话我会写上来的`。
二、现在我们介绍用第三方SQL Server 日志清理工具来清理日志,简单易用高效,推荐用这个方法。
我喜欢用 SqlServer日志清除专家 v3.5 来实现这个功能。界面如下:
数据库那里一般会将整个服务器的数据库名都列举出来,需要选择为自己账户能管理到的那个,我这里DB_iszip账户能管理的是 iszip ,选择好之后,点“清除日志”按钮,然后SQL Server 2000的日志就被清理好了,此时你去服务器看你数据库日志占用空间就只有1M了。
;❹ SQL数据库太大怎么办
我有个大的 SQL 文件要回放,需要马上做,但又怕压死业务,怎么办?
先来建一个测试库:
可以看到 CPU 已经非常冷静,并且缓慢的处理数据。
💡小贴士:pv 工具既可以用于显示文件流的进度,也可以用于文件流的限速。在本实验中,我们用 PV 来限制 SQL 文件发到 MySQL client 的速度,从而限制 SQL 的回放速度,达到不影响其他业务的效果。
❺ SQL数据库如何压缩
1、首先从开始菜单着手,打开开始菜单栏,在菜单栏上找到我们已经安装的SQL server 2008,单击打开它。
❻ sql server怎么收缩日志
1、首先选中数据库右键--属性 点击
❼ 如何压缩SQL Server 2005指定数据库文件和日志的大小
下面有两个SQL语句可以达到在SQL Server 2005/2008压缩指定数据库文件和日志的大小的效果:
1、DBCC SHRINKDATABASE (Transact-SQL)
收缩指定数据库中的数据文件和日志文件的大小。
语法
DBCC SHRINKDATABASE
( 'database_name' | database_id | 0
[ ,target_percent ]
[ , { NOTRUNCATE | TRUNCATEONLY } ]
)
[ WITH NO_INFOMSGS ]
参数
'database_name' | database_id | 0 要收缩的数据库的名称或 ID。如果指定 0,则使用当前数据库。
target_percent 数据库收缩后的数据库文件中所需的剩余可用空间百分比。
NOTRUNCATE 通过将已分配的页从文件末尾移动到文件前面的未分配页来压缩数据文件中的数据。target_percent 是可选参数。 文件末尾的可用空间不会返回给操作系统,文件的物理大小也不会更改。因此,指定 NOTRUNCATE 时,数据库看起来未收缩。 NOTRUNCATE 只适用于数据文件。日志文件不受影响。
TRUNCATEONLY 将文件末尾的所有可用空间释放给操作系统,但不在文件内部执行任何页移动。数据文件只收缩到最近分配的区。如果与 TRUNCATEONLY 一起指定,将忽略 target_percent。 TRUNCATEONLY 只适用于数据文件。日志文件不受影响。
WITH NO_INFOMSGS 取消严重级别从 0 到 10 的所有信息性消息。
结果集
列名 说明
DbId 数据库引擎试图收缩的文件的数据库标识号。
FileId 数据库引擎尝试收缩的文件的文件标识号。
CurrentSize 文件当前占用的 8 KB 页数。
MinimumSize 文件最低可以占用的 8 KB 页数。这与文件的最小大小或最初创建时的大小相对应。
UsedPages 文件当前使用的 8 KB 页数。
EstimatedPages 数据库引擎估计文件能够收缩到的 8 KB 页数。
备注
若要收缩特定数据库的所有数据和日志文件,请执行 DBCC SHRINKDATABASE 命令。若要一次收缩一个特定数据库中的一个数据或日志文件,请执行 DBCC SHRINKFILE 命令。
若要查看数据库中当前的可用(未分配)空间量,请运行 sp_spaceused。
可在进程中的任一点停止 DBCC SHRINKDATABASE 操作,任何已完成的工作都将保留。
收缩后的数据库不能小于数据库的最小大小。最小大小是在数据库最初创建时指定的大小,或是使用文件大小更改操作(如 DBCC SHIRNKFILE 或 ALTER DATABASE)显式设置的最后大小。例如,如果数据库最初创建时的大小为 10 MB,后来增长到 100 MB,则该数据库最小只能收缩到 10 MB,即使已经删除数据库的所有数据也是如此。
运行 DBCC SHRINKDATABASE 而不指定 NOTRUNCATE 选项或 TRUNCATEONLY 选项等价于带 NOTRUNCATE 运行 DBCC SHRINKDATABASE 操作,然后再带 TRUNCATEONLY 运行 DBCC SHRINKDATABASE 操作。
要收缩的数据库不必在单用户模式下;其他的用户仍可以在数据库收缩时对其进行工作。这也包括系统数据库。
不能在备份数据库时收缩数据库。反之,也不能在数据库执行收缩操作时备份数据库。
DBCC SHRINKDATABASE 的工作原理
DBCC SHRINKDATABASE 以每个文件为单位对数据文件进行收缩。然而,DBCC SHRINKDATABASE 在对日志文件进行收缩时,它将视为所有的日志文件都存在于一个连续的日志池中。文件始终从末尾开始收缩。
假设名为 mydb 的数据库有一个数据文件和两个日志文件。数据文件和日志文件分别是 10 MB,并且数据文件包含 6 MB 数据。
Microsoft SQL Server 2005 数据库引擎对每个文件计算一个目标大小。这就是文件将要收缩到的大小。将 target_percent 与 DBCC SHRINKDATABASE 一起指定时,数据库引擎计算的目标大小是收缩后文件中的 target_percent 可用空间大小。例如,如果在收缩 mydb 时将 target_percent 指定为 25,则数据库引擎将此文件的目标大小计算为 8 MB(6 MB 数据加上 2 MB 可用空间)。因此,数据库引擎将任何数据从数据文件的后 2 MB 中移动到数据文件前 8 MB 的可用空间中,然后对该文件进行收缩。
假设 mydb 的数据文件包含 7 MB 的数据。将 target_percent 指定为 30,以允许将此数据文件收缩到可用空间为 30%。但是,将 target_percent 指定为 40 却不会收缩数据文件,因为数据库引擎收缩文件的目标大小不能小于数据当前占用空间大小。您还可以用另一种方法来考虑此问题:所要求的 40% 可用空间加上整个数据文件大小的 70%(10 MB 中的 7 MB),超过了 100%。因为所要求的可用百分比加上数据文件占用的当前百分比大于 100%(多出 10%),所以任何大于 30 的 target_size 都不会收缩此数据文件。
对于日志文件,数据库引擎使用 target_percent 来计算整个日志的目标大小;因此,target_percent 是收缩操作后日志中的可用空间大小。之后,整个日志的目标大小转换为每个日志文件的目标大小。
DBCC SHRINKDATABASE 尝试立即将每个物理日志文件收缩到其目标大小。如果虚拟日志中的所有逻辑日志部分都没有超出日志文件的目标大小,则该文件将成功截断,DBCC SHRINKDATABASE 完成且不显示任何消息。但是,如果部分逻辑日志位于超出目标大小的虚拟日志中,则数据库引擎将释放尽可能多的空间,并发出一条信息性消息。该消息说明需要执行哪些操作来将逻辑日志移出位于文件末尾的虚拟日志。执行该操作以后,DBCC SHRINKDATABASE 可用于释放剩余空间。有关详细信息,请参阅收缩事务日志。
因为日志文件只能收缩到虚拟日志文件边界,所以不可能将日志文件收缩到比虚拟日志文件更小(即使现在没有使用该文件)。虚拟日志文件的大小在创建或扩展这些日志文件时由数据库引擎动态选择。有关虚拟日志文件的详细信息,请参阅事务日志物理体系结构。
❽ sql收缩数据库日志的几种办法
在SQL Server 2000/2005中可以快速压缩日志log文件,通过SQL,
方法一:
--BigData为数据库名
DUMPTRANSACTIONBigDataWITHNO_LOG
BACKUPLOGBigDataWITHNO_LOG
DBCCSHRINKDATABASE(BigData)
执行以上语句可以快速压缩日志文件到1M。
但是以上语句中前两行在SQL Server 2008下无法执行 ,
第一行提示“Incorrect syntax near the keyword 'TRANSACTION'.”
第二行提示“One or more of the options (no_log) are not supported for this statement. Review the documentation for supported options. ”
第三行可以执行。但日志log文件没有任何变化。
原来SQL Server 2008已经不再支持DUMPTRANSACTION和BACKUP LOG WITH NO_LOG,
sql Server 2005说明中明确:包含 DUMP 语句是为了向后兼容。而 后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。 使用 BACKUP。
SQL Server 2008说明:BACKUP LOG WITH NO_LOG 和 WITH TRUNCATE_ONLY 选项已废止。使用完整恢复模式或大容量日志恢复模式时,如果必须删除数据库中的日志备份链,请切换至简单恢复模式。有关详细信息,请参阅有关从完整恢复模式或大容量日志恢复模式切换的注意事项。
方法二:
useDB_NAME
sp_dboptionDB_NAME,"trunc.logonchkpt.",true
checkpoint
sp_dboptionDB_NAME,"autoshrink",true
方法三:(请提前备份文件!!)
Detach数据库。
删除log文件。
附加数据库,选移除log文件,此时SQL Server 会自动重新建立一个512K 的Log 文件。
方法四:
USEBigData;
GO
BACKUPLOGDATABASENAMETODISK='d: est.bak'
--.
DBCCSHRINKFILE(Bigdata_Log,1);
GO
❾ sql2008中如何收缩数据库日志文件
解决方法:
方法一
右键选择数据库-》任务-》收缩-》文件-》文件类型-》日志-》在释放未使用的空间前重新组织页
方法二(不推荐)
1 必须先改成简单模式
2 然后用
----Logical Files :
--CMS1.5_Data
--CMS1.5_Log
DBCC SHRINKFILE (N'CMS1.5_Log' , 1)
GO
注:Data是数据文件,Log是日志文件