【发布时间】:2009-11-03 23:47:50
【问题描述】:
我有一个我们遇到问题的数据库。不知何故,日志变成了 400 Gb,数据库变得毫无用处。我想删除与数据库的所有现有连接,然后分离数据库。
基本上我要做的是摆脱巨大的日志文件并创建一个新文件并重新附加如果它有效。如果没有,我们将从备份中恢复。
【问题讨论】:
标签: sql-server-2000
我有一个我们遇到问题的数据库。不知何故,日志变成了 400 Gb,数据库变得毫无用处。我想删除与数据库的所有现有连接,然后分离数据库。
基本上我要做的是摆脱巨大的日志文件并创建一个新文件并重新附加如果它有效。如果没有,我们将从备份中恢复。
【问题讨论】:
标签: sql-server-2000
如果日志没有用,你可以使用这些命令,但在生产服务器上应用之前,请自己记录。
BACKUP LOG WITH NO_LOG 用于丢弃日志中的页面,
sp_helpdb 用于查找 db 文件的名称
DBCC SHRINKFILE('your log filename ', 0) -- 用于将物理文件中继到指定的大小。
【讨论】:
如果您确定没有打开的事务,您可以将数据库置于单用户模式。
ALTER DATABASE [YourDB] SET SINGLE_USER WITH NO_WAIT
完成后将其恢复为多用户模式 ALTER DATABASE [YourDB] SET MULTI_USER WITH NO_WAIT
会
使用 truncate_only 备份日志 yourdb 然后 dbcc shrinkdatabase(yourdb) 不会为您缩小日志文件?
【讨论】:
基本上没有命令会针对数据库执行。我们最终做的是关闭服务并创建 mdf 和 ldf 文件的空副本并替换 sql server 正在使用的那些。之后,我们从上次备份中恢复了数据库,瞧,它又开始工作了(大部分情况下)。
【讨论】:
ALTER DATABASE [DB_NAME_HERE] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE [DB_NAME_HERE] SET MULTI_USER
【讨论】: