0
我想更新/插入数据的数量庞大到数据库的SqlDataAdapter和事务日志数据库已满
我用下面的代码:
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 [email protected]
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: The transaction log for database 'dbName' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases
我知道这个问题已经被问了很多时间,但是我搜索,以找出是否我更新的方式/插入导致了问题。
因为我不是一个DBA,我有数据库服务器上没有权利,我不能修改备份日志,但是我真的不关心,如果问题仅仅是。然后这是由dba来解决的。
我的问题是,在编码部分,我是不是做错了什么,我可以改进,不知怎的?
感谢
什么是你的数据库的恢复模式?如果你有一个DBA,你应该让他看看这个。 – JodyT 2013-03-15 21:45:13
恢复模式设置为FULL,但我没有改变,无论是收缩数据库中,如果唯一的解决办法是修改这一点,那么我真的不关心,因为它是由数据库管理员来管理的权利。我只关心与编码部分 – Maro 2013-03-15 21:49:03
是的,这是对DBA的一个问题,他们需要运行该数据库事务日志备份来清除它。然后可以根据具体情况收缩文件或扩展磁盘。 – steoleary 2013-03-16 08:35:46