1. 删除sqlserver数据库日志
在sqlserver中,每个数据库都有一个事务日志,用于记录数据库中所有修改的操作,以便在出现故障或回滚时进行恢复。然而,事务日志也会占用大量的磁盘空间,对服务器性能有影响。如果您有一些不太关键的数据库,而且不需要恢复到某个特定的时间点,那么可以考虑删除事务日志,以节省磁盘空间。
1.1 查看数据库日志使用情况
在删除数据库日志之前,需要先查看数据库日志的使用情况,可以使用以下查询语句:
USE <数据库名>;
GO
DBCC SQLPERF(LOGSPACE);
GO
其中,<数据库名>需要替换为你要查看的数据库名。执行上述语句后,会返回一个结果集,其中包含了该数据库日志文件的大小(单位为KB),以及已使用的百分比。例如:
Database Name Log Size (MB)
Log Space Used (%)
Status
<数据库名> 4648.586
99.79858
0
从上面的结果中可以看出,<数据库名>数据库的日志文件大小为4648.586MB,已使用99.79858%。如果该数据库日志文件的大小占用了过多的磁盘空间,可以考虑删除一部分日志文件。
1.2 停止数据库日志的增长
为了删除数据库日志,需要先停止数据库的日志增长。可以通过修改数据库的恢复模式来达到这个目的。
在sqlserver中,有三种恢复模式可供选择:
完全恢复模式(Full Recovery Model)
大容量日志恢复模式(Bulk-Logged Recovery Model)
简单恢复模式(Simple Recovery Model)
其中,完全恢复模式和大容量日志恢复模式的日志将不会被自动删除,如果不手动进行删除,会占用大量的磁盘空间。而简单恢复模式的日志文件会每次checkpoint后被自动删除。如果你的数据库不需要进行定点还原,可以将数据库的恢复模式改为简单恢复模式,使数据库日志的增长得到控制。可以使用以下语句进行修改:
USE master;
GO
ALTER DATABASE <数据库名> SET RECOVERY SIMPLE;
GO
其中,<数据库名>需要替换为你要修改的数据库名。
1.3 缩小数据库日志文件
在停止了数据库日志的增长后,可以使用以下语句缩小数据库日志文件的大小:
USE <数据库名>;
GO
DBCC SHRINKFILE (<日志文件名>, <缩小后的大小>);
GO
其中,<数据库名>需要替换为你要操作的数据库名;<日志文件名>需要替换为该数据库的事务日志文件名(可以通过查询系统表sys.database_files获取);<缩小后的大小>为你希望该文件缩小到的大小,单位为MB。
需要注意的是,如果要缩小日志文件到一个比较小的值,需要多次执行以上缩小命令,以便每次只缩小一点点。
2. 没有日志的数据库恢复办法
有些时候,当我们使用sqlserver时,可能因为一些原因造成了某些数据库的日志文件被删除或者损坏,导致该数据库无法正常启动。下面介绍一下针对无日志的数据库的恢复方法:
2.1 启动sqlserver服务并新建一个数据库
由于我们需要恢复的数据库没有日志,无法正常启动,那么首先需要确保sqlserver服务已经启动。然后,新建一个数据库用于恢复数据。可以使用以下语句:
USE master;
GO
CREATE DATABASE <新数据库名>;
GO
其中,<新数据库名>需要替换为你自己想要的数据库名。
2.2 将原数据库的数据文件复制到新数据库文件夹
找到原数据库的数据文件,将其复制到新数据库所在的文件夹中。可以使用以下语句来查找原数据库的数据文件:
USE <原数据库名>;
GO
SELECT * FROM sys.database_files;
GO
其中,<原数据库名>需要替换为你要查找的数据库名。查询结果中会返回该数据库的数据文件名和文件路径。将数据文件复制到新数据库文件夹中,可以使用以下语句来移动数据文件:
USE master;
GO
ALTER DATABASE <新数据库名> MODIFY FILE ( NAME = <文件名>, FILENAME = 'D:\...<文件路径>\<文件名>' );
GO
其中,<新数据库名>为新建的数据库名;<文件名>为查询结果中的数据文件名;<文件路径>为数据文件所在的路径。
2.3 使用DBCC CHECKDB恢复数据
在将原数据库的数据文件复制到新数据库文件夹后,可以使用DBCC CHECKDB命令来恢复数据。该命令将在检查数据库时自动修复其中的问题。可以使用以下语句:
USE <新数据库名>;
GO
DBCC CHECKDB;
GO
查询成功后,即可恢复原数据库中的数据了。
总结
以上就是删除sqlserver数据库日志和没有日志的数据库恢复办法的详细介绍。在进行修改或删除数据库日志文件时,需要特别注意,不要误删文件或者误操作数据库。在数据库出现故障时,要及时采取措施进行恢复,以免造成不必要的损失。