用BACKUP LOG database WITH NO_LOG清除日志把数据库属性中的故障还原模型改为简单可以大大减慢日志增长的速度
如果把还原模型调到简单这样就不支持时间点还原了但是日志文件会很小如果数据比较重要推荐还是把数据库的还原模型调为完全用BACKUP LOG database WITH NO_LOG命名后会截断不活动日志不减小物理日志文件的大小但逻辑日志会减小收缩数据库后会把不活动虚拟日志删除来释放空间不会损坏数据
如果日志被截断并收缩数据库后就不能直接用最近的一个全库备份做时间点还原建议立即备份数据库以防万一
sql server运行中是否能删除主数据库事务日志文件
步骤如下
()分离数据库企业管理器--数据库--右击你要删除日志的数据库--所有任务--分离数据库
()然后删除日志文件
()然后再附加数据库
企业管理器--数据库--右击数据库--所有任务--附加数据库这时候只附加mdf就可以了
压缩SQL数据库及日志的详细方法
SQL Server 基础教程压缩数据库
数据库在使用一段时间后时常会出现因数据删除而造成数据库中空闲空间太多的情况这时就需要减少分配给数据库文件和事务日志文件的磁盘空间以免浪费磁盘空间当数据库中没有数据时可以修改数据库文件属性直接改变其占用空间但当数据库中有数据时这样做会破坏数据库中的数据因此需要使用压缩的方式来缩减数据库空间可以在数据库属性选项中选择Auto shrink选项让系统自动压缩数据库也可以用人工的方法来压缩人工压缩数据库有以下两种方式
用Enterprise Manager 压缩数据库在Enterprise Manager 中在所要压缩的数据库上单击右键从快捷菜单中的所有任务(All Tasks)中选择ShrinkDatabase(压缩数据库)选项就会出现如图 所示的对话框可以在图 所示的对话框中选择数据库的压缩方式也可以选择使用压缩计划或压缩单个文件单击图 中的Files按钮会出现如图 所示的压缩数据库文件对话框可以针对每个数据库文件进行不同的压缩设置
单击图 中的Change 按钮会出现如图 所示的压缩计划编辑对话框可以指定压缩计划的执行方式单击图中的Change 按钮会出现如图 所示的循环工作计划编辑对话框可以编辑计划执行的周期或时间点设置完成后单击OK 按钮就开始压缩数据库在压缩结束后会显示一个压缩情况信息框
用TransactSQL 命令压缩数据库
可以使用DBCC SHRINKDATABASE 和DBCC SHRINKFILE 命令来压缩数据库其中DBCC SHRINKDATABASE 命令对数据库进行压缩DBCC SHRINKFILE 命令对数据库中指定的文件进行压缩
() DBCC SHRINKDATABASE
DBCC SHRINKDATABASE 命令语法如下
DBCC SHRINKDATABASE (database_name [ target_percent]
[ {NOTRUNCATE | TRUNCATEONLY}] )
各参数说明如下
·target_percent 指定将数据库压缩后未使用的空间占数据库大小的百分之几如果指定的百分比过大超过了压缩前未使用空间所占的比例则数据库不会被压缩并且压缩后的数据库不能比数据库初始设定的容量小
·NOTRUECATE
将数据库缩减后剩余的空间保留在数据库中不返还给操作系统如果不选择此选项则剩余的空间返还给操作系统
·TRUNCATEONLY
将数据库缩减后剩余的空间返还给操作系统使用此命令时SQLServer 将文件缩减到最后一个文件分配区域但不移动任何数据文件选择此项后target_percent 选项就无效了
例 压缩数据库mytest 的未使用空间为数据库大小的%
dbcc shrinkdatabase (mytest )
运行结果如下
DBCC execution completed If DBCC printed error
messages contact your system administrator
() DBCC SHRINKFILE
DBCC SHRINKFILE 命令压缩当前数据库中的文件其语法如下
DBCC SHRINKFILE ( {file_name | file_id }
{ [ target_size] |
[ {EMPTYFILE | NOTRUNCATE | TRUNCATEONLY}] } )
各参数说明如下
·file_id
指定要压缩的文件的鑒别号(Identification number 即ID)文件的ID 号可以通过 FILE_ID()函数或如本章前面所讲述的Sp_helpdb 系统存储过程来得到
·target_size
指定文件压缩后的大小以MB 为单位如果不指定此选项SQLServer 就会尽最大可能地缩减文件
·EMPTYFILE
指明此文件不再使用将移动所有在此文件中的数据到同一文件组中的其它文件中去执行带此参数的命令后此文件就可以用ALTER DATABASE 命令来删除了
其余参数NOTRUNCATE 和TRUNCATEONLY 与DBCC SHRINKDATABASE
命令中的含义相同
例: 压缩数据库mydb 中的数据库文件mydb_data 的大小到MB use mydb dbcc shrinkfile (mydb_data )
企业管理器里面的方法
打开企业管理器
打开要处理的数据库
点击最上面菜单>工具>SQL查询分析器打开SQL查询分析器
在输入窗口里面输入:
Code:
DUMP TRANSACTION [数据库名] WITHNO_LOG
BACKUP LOG [数据库名] WITH NO_LOG
DBCC SHRINKDATABASE([数据库名])
点击绿色的小三角(或按F)执行查询等状态栏提示处理完成即可!
程序里面的方法
压缩数据库日志
清空日志
exec(DUMP TRANSACTION [+@dbname+] WITHNO_LOG)
截断事务日志
exec(BACKUP LOG [+@dbname+] WITH NO_LOG)
收缩数据库文件(如果不压缩数据库的文件不会减小
exec(DBCC SHRINKDATABASE([+@dbname+]))
减小日志的方法
一用如下步做了
DUMPTRANSACTION库名WITHno_log
dbcc shrinkfile(logfilename)
收缩数据库
设定自动收缩
二
分离数据库删除日志文件再附加OK!
右击数据库--所有任务--分离or 附加
三
backup log库名WITHno_log
dbcc shrinkfile(logfilename)
收缩数据库
设定自动收缩