【发布时间】:2015-08-28 12:31:46
【问题描述】:
我知道还有其他问题的标题与我发布的问题完全相同,但每个问题都非常特定于他们所引用的查询或程序。
我在这里为一所大学管理 Blackboard Learn 系统,并且可以直接访问数据库。简而言之,有一个存储过程会导致系统头痛。有时,当系统更改提交时,错误会被抛出到后端的日志中,识别称为bbgs_cc_setStmtStatus 的存储过程并以The current transaction cannot be committed and cannot support operations that write to the log file. Roll back the transaction. 出错
这是 SP 的代码,但是,我没有编写它,因为它是 Blackboard 在填充并为应用程序创建表时安装的库存“设备”。
USE [BBLEARN]
GO
/****** Object: StoredProcedure [dbo].[bbgs_cc_setStmtStatus] Script Date: 09/27/2013 09:19:48 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[bbgs_cc_setStmtStatus](
@registryKey nvarchar(255),
@registryVal nvarchar(255),
@registryDesc varchar(255),
@overwrite BIT
)
AS
BEGIN
DECLARE @message varchar(200);
IF (0 < (SELECT count(*) FROM bbgs_cc_stmt_status WHERE registry_key = @registryKey) ) BEGIN
IF( @overwrite=1 ) BEGIN
UPDATE bbgs_cc_stmt_status SET
registry_value = @registryVal,
description = @registryDesc,
dtmodified = getDate()
WHERE registry_key = @registryKey;
END
END
ELSE BEGIN
INSERT INTO bbgs_cc_stmt_status
(registry_key, registry_value, description) VALUES
(@registryKey, @registryVal, @registryDesc);
END
SET @message = 'bbgs_cc_setStmtStatus: Saved registry key [' + @registryKey + '] as status [' + @registryVal + '].';
EXEC dbo.bbgs_cc_log @message, 'INFORMATIONAL';
END
我不期待 Blackboard 特定的支持,但我想知道是否有任何我可以检查的关于 SQL Server 2008 的内容,看看是否有系统设置导致了这种情况。我确实有一张在 Blackboard 上打开的票,但还没有听到任何消息。
以下是我检查过的一些内容:
tempdb 系统数据库:
我使临时日志的初始大小为 100MB,并让它自动增长 100MB,不受限制地查看这是否是导致问题的原因。它似乎没有帮助。我们实际的 tempdb 从 4GB 开始,每次需要它时都会自动增长一个 gig。 tempdb 中可用空间为 tempdb 实际大小的 95-985 是否正常?例如,现在 tempdb 的大小为 12388.00 MB,可用空间为 12286.37MB。
此外,BBLEARN 主表的日志文件已停止增长,因为它已达到最大自动增长。我将其初始大小设置为 3GB 以增加其大小。
【问题讨论】:
-
这个错误可能是由bbgs_cc_log存储过程产生的。可以显示 bbgs_cc_log 吗?
标签: sql sql-server sql-server-2008