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

时间:2013-03-15 21:42:11

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

我试图将大量数据更新/插入数据库

我使用以下代码:

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,而且我对数据库服务器没有任何权限,因此我无法修改备份日志,但是如果只是问题,我真的不在乎。然后由dba来解决它。

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

由于

1 个答案:

答案 0 :(得分:2)

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