如何解决由于“LOG_BACKUP”
我们正在从一个数据库(比如 FirstDB)中的几个表中删除,并将大约 93,357 行(一次一行)插入到另一个数据库(比如 SecondDB)的一个 Log 表中。
数据库恢复模型已满。
每行包含 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 行时,我们收到错误“数据库 'SecondDB' 的事务日志由于 'LOG_BACKUP' 已满
我应该为数据库 SecondDB 每 1000 次插入提交事务吗?
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行会占用多少事务日志?
谢谢
解决方法
数据库恢复模型已满。
那么唯一重要的是日志文件的大小和日志备份的频率。批处理不会导致写入较少的日志或允许在 Full Recovery Model 下的下一个事务日志备份之前重用日志空间。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。