Transact-SQL 参考

DBCC CONCURRENCYVIOLATION

显示有关在 SQL Server 2000 Desktop Engine 或 SQL Server 2000 个人版上并发执行 5 个以上批处理的次数的统计。还控制是否在 SQL Server 错误日志中记录这些统计。

语法

DBCC CONCURRENCYVIOLATION [ ( DISPLAY | RESET | STARTLOG | STOPLOG ) ]

参数

DISPLAY

显示并发冲突计数器的当前值。计数器记录自从启动日志记录或上次重置计数器以来并发执行 5 个以上批处理的次数。如果没有指定选项,则 DISPLAY 是默认值。

RESET

将所有的并发冲突计数器设置为零。

STARTLOG

每当有 5 个以上的并发批处理时,就每分钟在 SQL Server 事件日志中记入一次并发冲突计数器记录。

STOPLOG

停止定期在 SQL Server 事件日志中记入并发冲突计数器记录。

注释

DBCC CONCURRENCYVIOLATION 可在任何 SQL Server 2000 版本上执行,但只在这两个具有并发工作负荷调控器的 SQL Server 2000 版本上有效:SQL Server 2000 Desktop Engine 和 SQL Server 2000 个人版。在所有其它版本上,除了返回以下消息外没有其它作用:

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

当并发执行 5 个以上的批处理时,SQL Server 2000 桌面版和 SQL Server 2000 个人版具有可限制性能的并发工作负荷调控器。随着并发执行的批处理数不断增加,调控器通过增加数量来降低系统的性能。并发执行 5 个以上批处理的次数计数在内部计数器中维护。可使用带 DISPLAY 参数或不用参数的 DBCC CONCURRENCYVIOLATION 语句显示这些计数器的内容。如果系统经过仔细调整后性能仍很低,并且 DBCC CONCURRENCYVIOLATIONS 显示数据库引擎经常有远远超过 5 个的批处理并发执行,则应考虑升级到其它的 SQL Server 2000 版本。

可使用 DBCC CONCURRENCYVIOLATION(STARTLOG) 语句,启用定期在 SQL Server 事件日志中记入并发冲突计数器记录的功能。当启用日志记录时,如果正在执行的并发批处理超过 5 个,则将每分钟在事件日志中记入一次并发冲突计数器记录。每当有 4 个或更少的并发批处理时,不将计数器写入错误日志。

DBCC CONCURRENCYVIOLATION 语句的主要输出在以下几行中:

Concurrency violations since 2000-02-02 11:03:17.20
 1   2   3    4    5   6    7   8   9   10-100   >100
 5   3   1    0    0   0    0   0   0      0       0

当启用定期日志记录时,每当并发执行的批处理超过 5 个,便在 SQL Server 错误日志中记录以下格式的消息:

2000-02-02 11:03:17.20 spid 12  This SQL Server has been opimized for 5 concurrent queries. This limit has been exceeded by 2 queries and performance may be adversely affected.
结果集

如果对并发冲突计数器启用定期日志记录,DBCC CONCURRENCYVIOLATION 将返回以下结果集(消息):

Concurrency violations since 2000-02-02 11:03:17.20
 1   2   3    4    5   6    7   8   9   10-100   >100
 5   3   1    0    0   0    0   0   0      0       0
Concurrency violations will be written to the SQL Server error log.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

如果没有对并发冲突计数器启用定期日志记录,DBCC CONCURRENCYVIOLATION 将返回以下结果集(消息):

Concurrency violations since 2000-02-02 11:03:17.20
 1   2   3    4    5   6    7   8   9   10-100   >100
 5   3   1    0    0   0    0   0   0      0       0
Concurrency violations will not be written to the SQL Server error log.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
权限

DBCC CONCURRENCYVIOLATION 权限默认授予 sysadmin 固定服务器角色的成员且不可转让。

示例

下例显示当前计数器值,然后重置计数器。

-- Display the current counter values.
DBCC CONCURRENCYVIOLATION
GO
-- Reset the counter values to 0.
DBCC CONCURRENCYVIOLATION(RESET)
GO

请参见

DBCC

桌面上的 SQL Server 2000 数据库