Analyzing Database Deadlock Telemetry

INTRODUCED IN: Business Central 2022 release wave 1, version 20.0

Note

Azure Active Directory is now Microsoft Entra ID. Learn more

The database deadlock telemetry gathers information about deadlocks that happen. Deadlocks can prevent users from completing tasks in the Business Central client. A deadlock occurs when two or more processes block each other because each has locked a database resource. The system terminates and rolls back one of the sessions (known as the deadlock victim), then emits a telemetry signal.

As a partner or developer, this telemetry provides several benefits:

  • Makes you aware that there are deadlocks happening.
  • Let's you identify who was the victim in deadlock situations.
  • In some deadlock problems, the process that is the victim and the process that succeeds will change by chance. In these cases, both will be stored in the telemetry resource as different deadlock events.
  • For further monitoring and troubleshooting, this telemetry is complimented by other features like:

Important

For Business Central on-premises, you must turn on the EnableDeadlockMonitoring setting of the Business Central Server instance to collect the telemetry. For more information, see Configuring Business Central Server.

Database deadlock occurred

Occurs when a deadlock occurs.

General dimensions

Dimension Description or value
message Database deadlock occurred
severityLevel 1
user_Id The user telemetry ID for the user. From the user card, you can use user_Id to identify the user who triggered this telemetry event. Learn more in Assign a telemetry ID to users.

Custom dimensions

Dimension Description or value
eventId RT0028
aadTenantId Specifies the Microsoft Entra tenant ID used for Microsoft Entra authentication. For on-premises, if you aren't using Microsoft Entra authentication, this value is common.
alObjectId Specifies the ID of the AL object that ran the transaction that was victim of the deadlock.
alObjectName Specifies the name of the AL object that ran the transaction that was victim of the deadlock.
alObjectName Specifies the name of the AL object that ran the transaction that victim of the deadlock.
alObjectType Specifies the type of the AL object that ran the transaction that was victim of the deadlock, such as a page or report.
alStackTrace The stack trace in AL.
clientType Specifies the type of client that executed the SQL Statement, such as Background or Web. For a list of the client types, see ClientType Option Type.
companyName Specifies the display name of the Business Central company.
component Dynamics 365 Business Central Server
componentVersion Specifies the version number of the component that emits telemetry (see the component dimension.)
environmentName Specifies the name of the tenant environment. See Managing Environments.
environmentType Specifies the environment type for the tenant, such as Production, Sandbox, Trial. See Environment Types
extensionId Specifies the AppID of the extension that was involved in the deadlock.
extensionName Specifies the name of the extension that was involved in the deadlock.
extensionVersion Specifies the version of that was involved in the deadlock.
sessionId Specifies the ID of the session that was involved by the deadlock.
sqlServerSessionId Specifies the ID of the SQL server session that was the victim of the deadlock.
sqlStatement Specifies the SQL statement that was the victim of in the deadlock.
telemetrySchemaVersion Specifies the version of the Business Central telemetry schema.

Monitoring and Analyzing Telemetry
Database Lock Timeout Telemetry
Enable Sending Telemetry to Application Insights