T-SQL事务日志问题

时间:2017-07-07 13:29:40

标签: sql-server ssis transactions

这是一个很长的故事,但我在学校系统的研究部门工作,我们与我们的IT部门合作。一段时间回到IT部门。我发了一个安装了SQL的服务器,基本上告诉我我自己 - 他们无法帮助维护服务器或SQL数据库的幕后功能。在大多数情况下,这很适合我,但我不是数据库管理员,我从来没有能够解决设置数据库备份和事务日志记录。

我现在要解决的问题是事务记录。每天晚上我都使用SSIS将大量数据从主数据库中提取到我的数据库中。我把这个过程分成了18个单独的步骤,第9步和第9步。 15是做事务日志备份。不幸的是,由于事务日志填满,我的进程仍然会定期崩溃 - 有时甚至在备份后的第10步。我打算在我的过程中禁用日志记录但是一直在阅读并看到你无法关闭日志记录。我希望有一个我不知道的简单解决方案......

我正在跑步:

Microsoft SQL Server 2012 (SP3-GDR) (KB3194721) - 11.0.6248.0 (X64)   
Sep 23 2016 15:49:43   
Copyright (c) Microsoft Corporation  Enterprise Edition (64-bit) 
on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor). 

老实说,我甚至不知道我正在做什么类型的交易记录或如何检查和查找。

非常感谢任何帮助

1 个答案:

答案 0 :(得分:1)

首先,当你说,

  

每晚我都使用SSIS从我们的主数据库中将大量记录输入我的数据库

我认为这并不意味着系统主数据库。如果是,那里不应该有用户对象,它不应该在那里处理或存储任何用户数据。如果是,请将其迁移到用户数据库。

其次,对日志问题的简短回答是这样的: 数据库的默认恢复模型为Full。如评论中所述,这意味着在备份发生之前不会覆盖任何日志。此模型适用于时间点恢复,对事务系统有意义。所以有几个选择:

  • 如果这是一个报告系统,将它放入simple recovery model并进行夜间备份通常是有意义的。特别是如果数据每天只更改一次。
  • 如果确实需要最新的时间点恢复,则应每15分钟执行一次日志备份。我猜这些备份的管理和保留对你没有意义,你应该使用选项1.
  • 在SSIS数据流中处理数据时,每个缓冲区一次提交一个。如果你没有摆弄默认值,这意味着你最多提交10k行。所以一切都已经好起来了。那么问题不在于批量大小太大,而是您处于错误的恢复模式或者您没有经常备份日志。