sdo*_*ble 6 sql-server sql-server-2017
继承数据库服务器进行维护,发现事务日志为92GB。我的计划是对其进行备份并将其恢复到正常大小,然后修复它。问题是我的计算机上没有足够的磁盘空间来进行本地备份,然后卸载。有没有一种方法可以运行指定大小或时间段的备份,以便我可以分阶段进行?
Jos*_*ell 20
不,您不能进行部分日志备份来将这项工作拆分为多个文件。
你能做什么取决于你的目标。
TO DISK = 'NUL'
,或者可能进行许多其他操作)SHRINKFILE
命令)*顺便说一句,如果您故意不进行日志备份,并且不打算开始,则应该将数据库保留在简单恢复模型中。否则日志文件将再次增长。
Aar*_*and 16
假设这是一个独立实例并且数据库不是 AG 的一部分,您应该能够放弃当前日志链并重新开始,方法是:
CHECKPOINT;
两次DBCC SHRINKFILE(filename, 1);
ALTER DATABASE db MODIFY FILE(name = filename, size = <some appropriate size>);
AMt*_*two 10
不,不存在“部分事务日志备份”的概念。
您是否需要维护事务日志链以进行恢复,或者保留 92GB 的事务日志备份?
如果您只想摆脱它并重新开始,并且可以自信地说“我不需要执行时间点恢复到现在之前的时间点!” 然后你就可以重新开始了。
您可以通过备份到 NUL 来有效地丢弃整个内容:
BACKUP DATABASE MyDatabaseWithHugeTLog
TO DISK = 'NUL:'; --Sends it to nowhere
Run Code Online (Sandbox Code Playgroud)
然后你就可以缩小事务日志以使其不那么大:
USE MyDatabaseWithHugeTLog
DBCC SHRINKFILE(MyDatabaseWithHugeTLog_Log,10000);
Run Code Online (Sandbox Code Playgroud)
请注意,您可能需要多次备份/收缩/备份/收缩才能将日志缩小到所需的大小。有效地缩小日志只会删除文件的尾部,因此如果有一部分正在使用,您可能需要将该活动部分环绕到开头以缩小到所需的大小。
然后,您就破坏了执行时间点恢复的能力,因为我们将日志发送到NUL
. 因此,您需要进行全新的完整备份或差异备份,以便为将来的恢复提供一个起点。
BACKUP DATABASE MyDatabaseWithHugeTLog
TO DISK \\SomeServer\MyBackupShare\MyDatabaseWithHugeTLog_YYYYMMDD_HHMISSMS;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2047 次 |
最近记录: |