首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql2005数据库日志文件40多G,数据文件2G多,怎么减少日志文件

2012-03-23 
sql2005数据库日志文件40多G,数据文件2G多,如何减少日志文件?我试过了N多方法:把库设置成简单模式。SQL cod

sql2005数据库日志文件40多G,数据文件2G多,如何减少日志文件?
我试过了N多方法:
把库设置成简单模式。

SQL code
declare @dbname varchar(50)declare temp_cur cursor scroll for select name from sysdatabasesopen temp_curfetch first from temp_cur into @dbnamewhile @@fetch_status =0 begin  exec ('backup log '+@dbname+' with no_log')  exec ('dbcc shrinkdatabase('+@dbname+')')  exec ('dbcc checkcatalog ('+@dbname+')')  exec ('dump transaction '+@dbname+' with no_log')  fetch next from temp_cur into @dbnameendclose temp_curdeallocate temp_cur

SQL code
1.清空日志  DUMP TRANSACTION 库名 WITH NO_LOG   2.截断事务日志:  BACKUP LOG 数据库名 WITH NO_LOG3. DBCC SHRINKFILE(1) 其中的1、2是SQL中的mdf 和ldf文件

可是日志文件还是那么大!求助?

[解决办法]
探讨
我试过了N多方法:
把库设置成简单模式。

SQL code


declare @dbname varchar(50)
declare temp_cur cursor scroll for select name from sysdatabases
open temp_cur
fetch first from temp_cur into @dbname
while @@fet……

[解决办法]
可以试着重启下SQL服务看看日志文件的大小。
[解决办法]
你的数据库下执行从下三个脚本,并返回记录贴上来

贴一下这个结果:
select log_reuse_wait_desc,* from sys.databases
where name='你的库名字'

再贴一下这个结果:
dbcc loginfo

再贴一下这个结果(只贴你log大的那个数据库的):
DBCC SQLperf(Logspace)
[解决办法]
探讨
在你的数据库下执行从下三个脚本,并返回记录贴上来

贴一下这个结果:
select log_reuse_wait_desc,* from sys.databases
where name='你的库名字'

再贴一下这个结果:
dbcc loginfo

再贴一下这个结果(只贴你log大的那个数据库的):
DBCC SQLperf(Logspace)

[解决办法]
分离数据库,然后重命名日志文件,然后用数据库文件附加数据库,就产生一个新的数据库日志应该是512K
[解决办法]
操作后重启下服务看看。
[解决办法]
先分离数据库,再删除日志,再挂接一个新的日志文件就可以了

--分离数据库文件
EXEC sp_detach_db @dbname = 'RedacsDB'

--删除日志文件后,重新挂接数据库
EXEC sp_attach_single_file_db @dbname = 'RedacsDB',
@physname = 'D:\Data\RedacsDB.mdf'
[解决办法]
两步搞定
1.设置为简单模式(如果是完整模式,那么需要先备份一下BACKUP LOG 数据库名字 to disk='d:\2.bak'

2.DBCC SHRINKFILE (数据库名_log,10)
“数据库名_log” 查看对应的日志逻辑名字
10表示收缩到10M
[解决办法]
探讨
chnyo_his 是需要的库
第1个语句结果是
log_reuse_wait_de.. name database_id source_database_..
REPLICATION chnyo_his 5 null

热点排行