0

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

我正在使用以下代码:

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来解决它。

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

谢谢

4

1 回答 1

2

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

于 2013-03-15T21:47:12.807 回答