发表评论
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
关于SQL Server事务日志的问题汇总
1.用backup log database with no_log清除日志把数据库属性中的故障还原模型改为“简单”可以大大减慢日志
是日志文件会很小,如果数据比较重要推荐还是把数据库的还原模型调为完全 【程序编程相关:Oracle RMAN快速入门指南】
增长的速度. 如果把还原模型调到简单,这样就不支持时间点还原了,但 【推荐阅读:存储过程编写经验和优化措施】
志,不减小物理日志文件的大小,但逻辑日志会减小,收缩数据库后会把不活动虚拟日志删除来释 【扩展信息:使用正规表达式编写更好的 SQL】
用backup log database with no_log命名后,会截断不活动日
放空间,不会损坏数据.
如果日志被截断并收缩数据库后,就不能直接用最近的一个全库
备份做时间点还原,建议立即备份数据库,以防万一.
2.sql server运行中,是否能删除主数据库事务日志文件 步骤如下:(1).分离数据库企业管理器--数据库--右击你要删除日志的数据库--所有
任务--分离数据库(2).然后删除日志文件(3).然后再附加数据库企业管理器--数据库--右击数据库--所有任务--附加数
据库这时候只附加.mdf就可以了.
3.压缩sql数据库及日志的详细方法
sql server 2000基础教程——压缩数据库数据库在使用一段时间后,时常会出现因数据删除而造成数据库
中空闲空间太多的情况,这时就需要减少分配给数据库文件与事
务日志文件的磁盘空间,以免浪费磁盘空间.当数据库中没有数
据时,可以修改数据库文件属性直接改变其占用空间,但当数据
库中有数据时,这样做会破坏数据库中的数据,因此需要使用压
缩的方式来缩减数据库空间.可以在数据库属性选项中选择“
auto shrink”选项,让系统自动压缩数据库,也可以用人工的
方法来压缩.人工压缩数据库有以下两种方式:1.用enterprise manager 压缩数据库在enterprise manager 中在所要压缩的数据库上单击右键,从
快捷菜单中的“所有任务(all tasks)”中选择“shrink
database(压缩数据库)”选项,就会出现如图6-10 所示的对
话框.可以在图6-10 所示的对话框中选择数据库的压缩方式,
也可以选择使用压缩计划或压缩单个文件 单击图6-10 中的“files”按钮,会出现如图6-11 所示的压缩
数据库文件对话框,可以针对每个数据库文件进行不同的压缩设
置.
中的“change” 按钮,会出现如图6-13 所示的循环工作计划编 【程序编程相关:Oracle RMAN快速入门指南】
缩计划编辑对话框,可以指定压缩计划的执行方式.单击图6-12 【推荐阅读:存储过程编写经验和优化措施】
“ok” 按钮就开始压缩数据库,在压缩结束后会显示一个压缩 【扩展信息:使用正规表达式编写更好的 SQL】
辑对话框,可以编辑计划执行的周期或时间点.设置完成后单击
情况信息框. 2.用transact-sql 命令压缩数据库可以使用dbcc shrinkdatabase 与dbcc shrinkfile 命令来压缩
数据库.其中dbcc shrinkdatabase 命令对数据库进行压缩,
dbcc shrinkfile 命令对数据库中指定的文件进行压缩.(1) dbcc shrinkdatabase dbcc shrinkdatabase 命令语法如下:dbcc shrinkdatabase (database_name [, target_percent][, {notruncate | truncateonly}] )各参数说明如下: ·target_percent 指定将数据库压缩后,未使用的空间占数据
库大小的百分之几.如果指定的百分比过大,超过了压缩前未使
用空间所占的比例,则数据库不会被压缩.并且压缩后的数据库
不能比数据库初始设定的容量小. ·notruecate将数据库缩减后剩余的空间保留在数据库,中不返还给操作系统
.如果不选择此选项,则剩余的空间返还给操作系统. ·truncateonly将数据库缩减后剩余的空间返还给操作系统.使用此命令时sql
server 将文件缩减到最后一个文件分配,区域但不移动任何数
据文件.选择此项后,target_percent 选项就无效了.例6-14: 压缩数据库mytest 的未使用空间为数据库大小的20%
.dbcc shrinkdatabase (mytest, 20)运行结果如下:dbcc execution completed. if dbcc printed error
messages, contact your system administrator. (2) dbcc shrinkfiledbcc shrinkfile 命令压缩当前数据库中的文件.
其语法如下:dbcc shrinkfile ( {file_name | file_id }{ [, target_size] |[, {emptyfile | notruncate | truncateonly}] } )各参数说明如下:·file_id指定要压缩的文件的鉴别号(identification number, 即id)
的sp_helpdb 系统存储过程来得到. ·target_size指定文件压缩后的大小.以mb 为单位.如果不指定此选项,sql 【程序编程相关:Oracle RMAN快速入门指南】
.文件的id 号可以通过 file_id()函数或如本章前面所讲述 【推荐阅读:存储过程编写经验和优化措施】
组中的其它文件中去.执行带此参数的命令后,此文件就可以用 【扩展信息:使用正规表达式编写更好的 SQL】
server 就会尽最大可能地缩减文件. ·emptyfile指明此文件不再使用,将移动所有在此文件中的数据到同一文件
alter database 命令来删除了. 其余参数notruncate 与truncateonly 与dbcc shrinkdatabase
命令中的含义相同. 例6-15: 压缩数据库mydb 中的数据库文件mydb_data2 的大小到
1mb. use mydb dbcc shrinkfile (mydb_data2, 1)
企业管理器里面的方法:1.打开企业管理器2.打开要处理的数据库3.点击最上面菜单>工具>sql查询分析器,打开sql查询分析器4.在输入窗口里面输入:
code:dump transaction [数据库名] with no_logbackup log [数据库名] with no_logdbcc shrinkdatabase([数据库名])
点击绿色的小三角(或按f5)执行查询,等状态栏提示处理完成
即可!
程序里面的方法:压缩数据库日志--1.清空日志exec(dump transaction [+@dbname+] with no_log) --2.截断事务日志:exec(backup log [+@dbname+] with no_log)--3.收缩数据库文件(如果不压缩,数据库的文件不会减小exec(dbcc shrinkdatabase([+@dbname+]))
4.减小日志的方法:
一.用如下步做了:1.dump transaction 庫名 with no_log2.dbcc shrinkfile(logfilename)3.收縮數據庫4.設定自動收縮.
二.分离数据库,删除日志文件,再附加,ok!右击数据库--所有任务--分离or 附加
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。