SqlDataAdapter和数据库的事务日志已满
本文关键字:日志 事务 数据库 SqlDataAdapter | 更新日期: 2023-09-27 18:04:03
我正在尝试更新/插入大量数据到数据库
我使用下面的代码:
using (SqlCommand command = connection.CreateCommand())
{
command.CommandType = CommandType.StoredProcedure;
command.CommandText = storedProcedureName;
command.UpdatedRowSource = UpdateRowSource.None;
foreach (SqlParameter sqlParameter in sqlParameters)
command.Parameters.Add(sqlParameter);
var adapter = new SqlDataAdapter();
adapter.InsertCommand = command;
adapter.UpdateBatchSize = batchSize;
return adapter.Update(table);
}
,我使用以下存储过程:
@shareAdGroupId int,
@groupPermissionName varchar(100)
AS
BEGIN transaction
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.@permissionTypeName
declare @permissionId int
EXEC [dbo].[PROC_UPSERT_PERMISSION] @permissionName = @groupPermissionName, @permissionId = @permissionId OUTPUT
SET NOCOUNT ON;
BEGIN TRY
begin
INSERT INTO [dbo].SHARE_AD_GROUP_PERMISSION
(SHARE_AD_GROUP_ID,PERMISSION_ID)
VALUES
(@shareAdGroupId,@permissionId)
end
END TRY
BEGIN CATCH
--RETURN ERROR_MESSAGE()
END CATCH
commit transaction
插入/更新一个随机数的记录后,我得到错误:
System.Data.SqlClient。数据库'dbName'的事务日志已满。要了解日志中的空间不能被重用的原因,请参见sys.databases
中的log_reuse_wait_desc列。
我知道这个问题已经被问过很多次了,但是我搜索了一下,看看我更新/插入的方式是否导致了这个问题。
因为我不是DBA,我在db服务器上没有权利,我不能修改备份日志,但是我真的不关心问题是否只是这样。然后由dba来解决这个问题。
我的问题是,在编码部分,我做错了什么,我能以某种方式改进吗?
谢谢
不,这个错误只能在DBA端修复,所以没有权限您什么都做不了。磁盘所在的卷空间不足,日志文件已达到配额,或者日志文件的自动增长设置不正确。