【问题标题】:Drop Database connections in MS Sql Server 2000在 MS Sql Server 2000 中删除数据库连接
【发布时间】:2009-11-03 23:47:50
【问题描述】:

我有一个我们遇到问题的数据库。不知何故,日志变成了 400 Gb,数据库变得毫无用处。我想删除与数据库的所有现有连接,然后分离数据库。

基本上我要做的是摆脱巨大的日志文件并创建一个新文件并重新附加如果它有效。如果没有,我们将从备份中恢复。

【问题讨论】:

    标签: sql-server-2000


    【解决方案1】:

    如果日志没有用,你可以使用这些命令,但在生产服务器上应用之前,请自己记录。

    BACKUP LOG WITH NO_LOG 用于丢弃日志中的页面,

    sp_helpdb 用于查找 db 文件的名称

    DBCC SHRINKFILE('your log filename ', 0) -- 用于将物理文件中继到指定的大小。

    【讨论】:

      【解决方案2】:

      如果您确定没有打开的事务,您可以将数据库置于单用户模式。

      ALTER DATABASE [YourDB] SET SINGLE_USER WITH NO_WAIT

      完成后将其恢复为多用户模式 ALTER DATABASE [YourDB] SET MULTI_USER WITH NO_WAIT

      使用 truncate_only 备份日志 yourdb 然后 dbcc shrinkdatabase(yourdb) 不会为您缩小日志文件?

      【讨论】:

      • dbcc shrinkfile 无法找到日志文件,即使我知道我输入了正确的名称。尝试使用命令只是连续运行。
      • 在管理工作室中检查数据库上的活动可能是你被另一个进程锁定了;如果在您单用户编辑数据库时打开了事务,则它可能正在回滚或其他一些内部过程。
      【解决方案3】:

      基本上没有命令会针对数据库执行。我们最终做的是关闭服务并创建 mdf 和 ldf 文件的空副本并替换 sql server 正在使用的那些。之后,我们从上次备份中恢复了数据库,瞧,它又开始工作了(大部分情况下)。

      【讨论】:

        【解决方案4】:
        ALTER DATABASE [DB_NAME_HERE] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
        
        ALTER DATABASE [DB_NAME_HERE] SET MULTI_USER
        

        【讨论】:

          猜你喜欢
          • 2019-12-27
          • 2010-11-11
          • 2010-09-21
          • 1970-01-01
          • 2017-03-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多