由于 'LOG_BACKUP',数据库的事务日志已满

The transaction log for database is full due to 'LOG_BACKUP'

我们正在从一个数据库(比如 FirstDB)中的几个 table 中删除,并将大约 93,357 行(一次一行)插入到另一个日志 table 中数据库(比如 SecondDB)。

数据库恢复模式已满。

每行包含6列数据

[DeleteTime] [datetime] NULL,
[FilePath] [varchar](255) NOT NULL,
[DocumentID] [int] NULL,
[AnotherCol] [varchar](50) NULL,
[AnotherCol2] [varchar](50) NULL,
[AnotherCol3] [varchar](50) NULL,

在之前的插入操作中,当我们插入 153,000 行时,出现错误“由于 'LOG_BACKUP'

,数据库 'SecondDB' 的事务日志已满

避免在事务日志中使用大量 space 的最佳方法是什么?

我是否应该为每 1000 次插入数据库 SecondDB 提交事务?

这是从 FirstDb 中删除并插入到 SecondDB 中的代码

using (SqlConnection con = new SqlConnection(connectionString))
        {
            try
            {
                con.Open();
                SqlDataAdapter da = new SqlDataAdapter("spGetDocuments", con);
                DataSet ds = new DataSet();
                da.Fill(ds);
                foreach (DataRow aRow in ds.Tables[0].Rows)
                {
                    try
                    {
                        //Code to insert into FirstDB

                        //Code to insert into SecondDB
                        cmdSecondDB = new SqlCommand("spUpdateDeleteDocsLog", con);
                        cmdSecondDB.CommandType = CommandType.StoredProcedure;
                        cmdSecondDB.Parameters.Add(new SqlParameter("FilePath", sDocumentPath));
                        cmdSecondDB.Parameters.Add(new SqlParameter("DocumentID", aRow["DocumentID"]));
                        :
                        iRow = cmdSecondDB.ExecuteNonQuery();
                        cmdSecondDB.Dispose();
                        cmdSecondDB = null;
                    }
                }
                ds.Dispose();
                ds = null;
                da.Dispose();
                da = null;
                con.Close();
            }               
        }

还有,有没有办法计算出上面6行数据中的93357行会占用多少transaction log?

谢谢

The databases Recovery Model is Full.

那么唯一重要的是日志文件的大小和日志备份的频率。批处理不会导致写入较少的日志或允许日志 space 在 Full Recovery Model.

下的下一个事务日志备份之前被重用