如何截断 SQL Server 2008 数据库中的事务日志?
什么是可能的最佳方法?
我从博客中尝试了以下方法:
1)从设置数据库到简单恢复,缩小文件,再设置完全恢复,实际上是丢失了宝贵的日志数据,无法及时恢复。不仅如此,您还将无法使用后续日志文件。
2) 缩小数据库文件或数据库增加碎片。
你可以做很多事情。首先,使用以下命令开始进行适当的日志备份,而不是截断它们并经常丢失它们。
BACKUP LOG [TestDb] TO DISK = N'C:\Backup\TestDb.bak'
GO
Run Code Online (Sandbox Code Playgroud)
删除 SHRINKING 文件的代码。如果您进行适当的日志备份,您的日志文件通常(同样通常,特殊情况除外)不会变得很大。
表格1
Id Name DemoID
1 a 33
2 b 44
3 c 33
4 d 33
5 e 44
Run Code Online (Sandbox Code Playgroud)
表2
Id DemoID IsTrue
11 33 1
12 44 1
Run Code Online (Sandbox Code Playgroud)
现在我们可以使用以下 2 个使用连接和使用子查询的查询来找到表 2 中存在哪个 DemoID,但是对于更多的记录,哪个更准确/更相关?
使用加入 -
SELECT Table1.Id FROM Table1 Table1 join Table2 Table2 on Table1.DemoID = Table2.DemoID
WHERE Table2.IsTrue = 1
Run Code Online (Sandbox Code Playgroud)
使用子查询 -
SELECT Table1.Id FROM Table1 Table1
WHERE Table1.DemoID in (select Table2.DemoID from Table2 Table2)
Run Code Online (Sandbox Code Playgroud)