我有一个 SQL Server 存储过程,它本质上将复杂的数据库“扁平化”为单独数据库中的单个简化表,以允许用户查询数据而无需了解数据库结构。SP 截断目标表,插入主键和其他字段,然后使用用户函数和各种查询来执行一系列更新以填充表中的所有其他字段以格式化数据。有大约。表中有 900 万行,SP 运行大约需要 2.5 小时,在此期间日志文件增长到超过 30GB。该数据库位于磁盘空间有限的 Azure 服务器上,最近由于日志文件空间不足,SP 崩溃了。
目标数据库处于简单恢复模式,并且 SP 运行了一个周末,因此没有其他进程或用户使用它。SP 不包含任何事务或提交,也不会对工作进行分块,它只是从开始到结束插入、更新(偶尔删除)行。如何提高效率并使用更少的日志文件空间?它应该在运行时使用事务、提交或收缩日志文件吗?或者是其他东西?