我在两个虚拟机上有两个群集SQL Server(2014 enterprise)。在web应用程序的日志中,我看到了死锁错误。因此,我进行了在线研究,找到了以下脚本,并在每台服务器上运行它:
DECLARE @targetPath nvarchar(512) = N'\MyData';
IF EXISTS(SELECT * FROM sys.dm_xe_sessions WHERE name = N'DeadlockMonitor')
RETURN;
DECLARE @productVersionString nvarchar(128) = CONVERT(nvarchar(128), SERVERPROPERTY('ProductVersion'));
DECLARE @productVersion decimal(8, 5) = CAST(LEFT(@productVersionString, CHARINDEX('.', @productVersionString, 4) - 1) AS decimal(8, 5));
IF (@productVersion < 10)
BEGIN
RAISERROR(N'Extended Events are not supported on this version of SQL Server.', 16, 1) WITH NOWAIT;
RETURN;
END
DECLARE @fullTargetPath nvarchar(1024) =
@targetPath +
(CASE WHEN RIGHT(@targetPath, 1) != N'\' THEN N'\' ELSE N'' END) +
REPLACE(@@SERVERNAME, N'\', N'$') +
N'.xel';
DECLARE @sql nvarchar(MAX) = N'
CREATE EVENT SESSION [DeadlockMonitor] ON SERVER
ADD EVENT sqlserver.xml_deadlock_report
ADD TARGET package0.' + (CASE WHEN @productVersion < 11 THEN N'asynchronous_file_target' ELSE N'event_file' END) + N'
(
SET
FILENAME = N''' + REPLACE(@fullTargetPath, 'C:', 'E:') + ''',
MAX_ROLLOVER_FILES = 0
)
WITH
(
EVENT_RETENTION_MODE = ALLOW_MULTIPLE_EVENT_LOSS,
MAX_DISPATCH_LATENCY = 15 SECONDS,
STARTUP_STATE = ON
);
ALTER EVENT SESSION [DeadlockMonitor] ON SERVER
STATE = START;'
EXEC(@sql);
在中生成了一个文件
MyData
运行上述脚本后的目录。
然而,我在web日志中看到了许多死锁错误,但是
我的数据
目录仍然为空。
我做的不对?
更多信息
我在我的桌面(开发机器)上使用相同的数据库运行了上述代码,并且能够捕获死锁。