【问题标题】:SqlDataAdapter and The transaction log for database is fullSqlDataAdapter 和数据库的事务日志已满
【发布时间】:2013-03-04 18:24:29
【问题描述】:

我正在尝试将大量数据更新/插入到数据库中

我正在使用以下代码:

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.SqlException:数据库“dbName”的事务日志已满。要找出日志中的空间不能被重用的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列

我知道这个问题已经被问过很多次了,但是我搜索了我更新/插入的方式是否导致了这个问题。

由于我不是 DBA,并且我对 db 服务器没有任何权限,因此我无法修改备份日志,但我并不关心问题是否仅此而已。那么这个就交给dba来解决了。

我的问题是,在编码部分,我做错了什么,我可以改进吗?

谢谢

【问题讨论】:

  • 您的数据库的恢复模式是什么?如果你有 DBA,你应该让他调查一下。
  • 恢复模型设置为 FULL,但我无权更改它也没有缩小数据库,如果唯一的解决方案是修改它,那么我真的不在乎,因为它是由dba来管理。我只关心编码部分
  • 是的,这是 DBA 的问题,他们需要在这个 DB 上运行事务日志备份来清除它。然后可以根据情况缩小文件或扩展磁盘。

标签: c# sql-server sql-server-2008-r2


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-07-14
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    相关资源
    最近更新 更多