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来解决这个问题。

我的问题是,在编码部分,我做错了什么,我能以某种方式改进吗?

谢谢

SqlDataAdapter和数据库的事务日志已满

不,这个错误只能在DBA端修复,所以没有权限您什么都做不了。磁盘所在的卷空间不足,日志文件已达到配额,或者日志文件的自动增长设置不正确。