sqlserver 数据库、日志所在磁盘满了,恢复挂起未成功,该如何解决?

sqlserver 数据库、日志所在磁盘满了,恢复挂起未成功,该如何解决?

解决办法如下, 如有问题及时联系我:

1. 删除不必要的文件:
   打开文件资源管理器,查找并删除不再需要的临时文件、备份文件或其他不必要的文件等,以释放磁盘空间。

2. 将数据库和日志移到其他磁盘:
   (1)使用 `SQL Server Management Studio(SSMS)`将数据库和日志移动到其他磁盘。

   (2)使用` T-SQL `命令在 `Microsoft SQL Server` 中更改数据库文件路径。
   
     2.1 使用 `SSMS`:

        1. 首先,使用 `SSMS` 连接到 `SQL Server`,右键单击要移动的数据库并选择“任务”>“将数据库离线”。
        2. 从系统上断开该数据库,并确保没有其他连接正在使用该数据库。
        3. 在文件资源管理器中移动数据文件和日志文件到新位置。
        4. 使用 `SSMS` 连接到 `SQL Server`,右键单击要移动的数据库并选择“属性”。
        5. 选择“文件”选项卡,更改数据文件和日志文件的路径并点击“确定”。
        6. 右键单击数据库并选择“任务”>“将数据库联机”。      
        
     2.2 使用 `T-SQL` 命令:
       下面是一个示例命令来更改 `AdventureWorks `数据库的数据文件路径。
      
   
       USE master;
       GO
       ALTER DATABASE AdventureWorks2017
       MODIFY FILE (NAME = AdventureWorks2017_Data, FILENAME = 'E:\SQLData\AdventureWorks2017_Data.mdf');
       GO
    
       
3. 压缩数据库:

   使用 `SSMS` 或 `T-SQL` 命令进行压缩操作。
   
     3.1 使用 `SSMS`:
        1. 连接到 `SQL Server` 并选择要压缩的数据库。
        2. 右键单击数据库并选择“任务”>“压缩数据”。
        3. 在“压缩数据库”对话框中,选中“压缩数据文件”和/或 “压缩日志文件”复选框,然后选择压缩级别并点击“确定”。
        
     3.2 使用 `T-SQL` 命令:
         压缩数据文件:
      
 
       USE AdventureWorks2017;
       GO
       DBCC SHRINKFILE (N'AdventureWorks2017_Data', 10);
       GO
       
 
       
4. 停止 `SQL Server` 日志写入:

   (1)使用 `SQL Server Management Studio(SSMS)`停止` SQL Server `日志写入。

   (2)使用` T-SQL` 命令停止 `SQL Server `日志写入。
   
     4.1 使用 `SSMS`:
        1. 连接到 `SQL Server` 并选择要停止写入日志的数据库。
        2. 右键单击数据库并选择“属性”。
        3. 选择“选项”选项卡,将恢复模式更改为“简单”,然后点击“确定”。
        4. 在 `SSMS` 中运行一个完整的备份以清除事务日志。
        
     4.2 使用` T-SQL `命令:
       下面是一个示例命令来将 `AdventureWorks` 数据库的恢复模式更改为简单恢复模式。

      
 
           USE master;
           GO
           ALTER DATABASE AdventureWorks2017
           SET RECOVERY SIMPLE;
           GO

 
          

5. 更改数据库恢复模式:
   使用 `SSMS` 或` T-SQL `命令更改数据库恢复模式。
   
     5.1 使用 `SSMS`:
        1. 连接到 `SQL Server` 并选择要更改恢复模式的数据库。
        2. 右键单击数据库并选择“属性”。
        3. 选择“选项”选项卡,将恢复模式更改为“简单”,然后点击“确定”。
        
     5.2 使用 `T-SQL` 命令:
       下面是一个示例命令来将  `AdventureWorks` 数据库的恢复模式更改为简单恢复模式。
      
 
         USE master;
         GO
         ALTER DATABASE AdventureWorks2017
         SET RECOVERY SIMPLE;
         GO

 

无论你使用以上哪种解决方法,都需要小心操作,确保备份数据,并在执行任何操作之前确认是否拥有必要的权限和资料。

sql日志贴一下,之前没做过完备?

当 SQL Server 数据库和日志所在磁盘满了,可能会导致数据库无法正常工作,甚至出现数据丢失的情况。以下是几种解决方法:

扩展磁盘空间。将系统和日志所在的磁盘空间扩展或者更换大容量硬盘,以确保足够的磁盘空间。

压缩数据库。使用 SQL Server 官方提供的压缩工具,将数据库进行压缩,以减小数据库文件的大小,释放磁盘空间。

删减无用的数据。清理数据库中无用的数据,如过期的日志、恢复点等,以释放磁盘空间。

备份并缩小数据库日志。对数据库进行备份,并缩小日志文件的大小,以释放磁盘空间。

如果恢复挂起未成功,可能是由于数据库日志文件损坏导致的,可以尝试使用 SQL Server 提供的日志文件检测和修复工具进行修复。如果还是无法解决,需要考虑进行数据库恢复操作,尽可能减少数据丢失。请注意,在执行任何恢复操作之前,一定要对数据库进行备份,并咨询专业人士的建议。

你先停止数据库服务,然后挤点空间出来,断掉网,然后启动数据库服务,清理下日志,dbcc checkdb 检查一下,没有问题了,再连上网

尝试下面思路来解决
1、删除不需要的数据:尝试删除 SQL Server 数据库和日志中不需要的数据,以释放磁盘空间。在删除前请确认是否为不需要的数据,因为删除数据不可恢复。
2、移动数据库和日志文件:尝试将 SQL Server 数据库和日志文件移动到其他磁盘,以释放当前磁盘的空间。
3、修复数据库:尝试使用 SQL Server 的修复工具来修复数据库。当然在修复前,需要一定的时间和磁盘空间来修复数据库。
4、更改数据库设置:尝试使用 SQL Server 的设置来更改数据库的恢复模式和日志模式,以减少磁盘空间的占用。
5、关闭自动备份:尝试在 SQL Server 中关闭自动备份,并手动执行备份操作。
最后,还有一个比较直接的方式,那就是给磁盘空间扩容。以满足数据库日常需求。