我试图将大量数据更新/插入数据库
我使用以下代码:
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来解决它。
我的问题是,在编码部分,我做错了什么,我能以某种方式改进吗?
由于
答案 0 :(得分:2)
不,这个错误只能在DBA端修复,所以如果没有权限,你就无法做到。磁盘所在的卷空间不足,日志文件已达到其配额,或者日志文件的自动增长未正确设置。