Table – InstanceEvents

Purpose

Tracks errors, or warnings, that occur as commands are executed on a specific instance record.

This functionality is designed for tracking complex command processing where events may be raised on the Instance, or its children. It brings all such events together in a single stream to make it easier to diagnose errors.

Definition

CREATE TABLE [dbo].[InstanceEvents](
	[InstanceGUID] [UNIQUEIDENTIFIER] NOT NULL,
	[LoggedOn] [DATETIME2](7) NOT NULL,
	[Event] [VARCHAR](MAX) NOT NULL,
 CONSTRAINT [PK_InstanceEvents] PRIMARY KEY CLUSTERED 
(
	[InstanceGUID] ASC,
	[LoggedOn] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

Column Definitions

The InstanceGUID is used to track which Instance record owns the event.

The LoggedOn maintains a timestamp of when the event occurred.

The Event contains a record of the event type and its context which is created by the code that logs the event.

Key Functionality

Table has an optional trigger called InstanceEventsPull that will send copies of the InstanceEvents to the InstanceChanges table if it should be necessary to transport them to other data storage.

CREATE OR ALTER TRIGGER [dbo].[InstanceEventsPull]
ON [dbo].[InstanceEvents] FOR INSERT, UPDATE, DELETE
AS 
BEGIN

	DECLARE @InstanceGUID AS UNIQUEIDENTIFIER

	DECLARE DeletedRecords CURSOR FOR 
	SELECT InstanceGUID FROM Deleted

	OPEN DeletedRecords

	FETCH NEXT FROM DeletedRecords INTO @InstanceGUID

	WHILE @@FETCH_STATUS = 0
	BEGIN
		EXECUTE dbo.GI_InstanceChanged @InstanceGUID, 'Event'
		FETCH NEXT FROM DeletedRecords INTO @InstanceGUID
	END

	CLOSE DeletedRecords;
	DEALLOCATE DeletedRecords;

	DECLARE InsertedRecords CURSOR FOR 
	SELECT InstanceGUID FROM Inserted

	OPEN InsertedRecords

	FETCH NEXT FROM InsertedRecords INTO @InstanceGUID

	WHILE @@FETCH_STATUS = 0
	BEGIN
		EXECUTE dbo.GI_InstanceChanged @InstanceGUID, 'Event'
		FETCH NEXT FROM InsertedRecords INTO @InstanceGUID
	END

	CLOSE InsertedRecords;
	DEALLOCATE InsertedRecords;

END
Updated on November 22, 2022

Was this article helpful?

Related Articles

Need Support?
Can’t find the answer you’re looking for? Don’t worry we’re here to help!
Contact Support

Leave a Comment