- Katılım
- 23 Eki 2022
- Mesajlar
- 8,178
- Çözümler
- 12
- Tepkime puanı
- 4,841
- Puanları
- 113
- Yaş
- 28
Merhaba,
Bu konuda vSRO serverlar için hazırlanmış SQL Error Logger sistemi paylaşılmıştır.
Bu sistem sayesinde database içinde oluşan tüm hatalar otomatik loglanır ve admin tarafında takip edilebilir hale gelir.
USE [SRO_VT_SYSTEM]
GO
CREATE TABLE [dbo].[_ErrorLogs](
[ErrorLogSN] [BIGINT] IDENTITY(1,1) NOT NULL,
[LoginName] [VARCHAR](128) NOT NULL,
[HostName] [VARCHAR](128) NOT NULL,
[ErrorNumber] [INT] NOT NULL,
[ErrorSeverity] [INT] NULL,
[ErrorState] [INT] NULL,
[ErrorProcedure] [VARCHAR](128) NULL,
[ErrorLine] [INT] NULL,
[ErrorMessage] [VARCHAR](MAX) NOT NULL,
[ErrorDate] [DATETIME] NOT NULL,
PRIMARY KEY CLUSTERED ([ErrorLogSN] ASC)
)
ALTER PROCEDURE [dbo].[_AddErrorLog]
@intProcedureID INT = NULL
AS
SET NOCOUNT ON;
SET XACT_ABORT ON;
DECLARE @vcErrorMessage VARCHAR(4000),
@intErrorNumber INT,
@intErrorSeverity INT,
@intErrorState INT,
@intErrorLine INT,
@vcErrorProcedure VARCHAR(128);
IF XACT_STATE() = -1
GOTO ErrorHandler;
IF ERROR_NUMBER() IS NULL
GOTO ErrorHandler;
SET @intErrorNumber = ERROR_NUMBER();
SET @intErrorSeverity = ERROR_SEVERITY();
SET @intErrorState = ERROR_STATE();
SET @intErrorLine = ERROR_LINE();
SET @vcErrorProcedure = ERROR_PROCEDURE();
SET @vcErrorMessage = ERROR_MESSAGE();
INSERT INTO dbo._ErrorLogs
VALUES (
CAST(ORIGINAL_LOGIN() AS VARCHAR(128)),
CAST(HOST_NAME() AS VARCHAR(128)),
@intErrorNumber,
@intErrorSeverity,
@intErrorState,
ISNULL(OBJECT_NAME(@intProcedureID), @vcErrorProcedure),
@intErrorLine,
@vcErrorMessage,
GETDATE()
);
RAISERROR(@vcErrorMessage, @intErrorSeverity, 1);
RETURN 100;
ErrorHandler:
IF XACT_STATE() <> 0
ROLLBACK TRANSACTION;
RETURN 0;
BEGIN TRY
-- YOUR CODE HERE
END TRY
BEGIN CATCH
EXEC dbo._AddErrorLog;
END CATCH;

✔ DB error tracking
✔ Procedure debug kolaylığı
✔ Server crash sebeplerini bulma
✔ GM / developer log sistemi
Bu konuda vSRO serverlar için hazırlanmış SQL Error Logger sistemi paylaşılmıştır.
Bu sistem sayesinde database içinde oluşan tüm hatalar otomatik loglanır ve admin tarafında takip edilebilir hale gelir.
Sistem Amacı
- Stored procedure hatalarını loglamak
- System error kayıtlarını tutmak
- RAISEERROR seviyelerini yakalamak
- Debug sürecini kolaylaştırmak
Error Log Table Oluşturma
USE [SRO_VT_SYSTEM]
GO
CREATE TABLE [dbo].[_ErrorLogs](
[ErrorLogSN] [BIGINT] IDENTITY(1,1) NOT NULL,
[LoginName] [VARCHAR](128) NOT NULL,
[HostName] [VARCHAR](128) NOT NULL,
[ErrorNumber] [INT] NOT NULL,
[ErrorSeverity] [INT] NULL,
[ErrorState] [INT] NULL,
[ErrorProcedure] [VARCHAR](128) NULL,
[ErrorLine] [INT] NULL,
[ErrorMessage] [VARCHAR](MAX) NOT NULL,
[ErrorDate] [DATETIME] NOT NULL,
PRIMARY KEY CLUSTERED ([ErrorLogSN] ASC)
)
Error Logger Procedure (_AddErrorLog)
ALTER PROCEDURE [dbo].[_AddErrorLog]
@intProcedureID INT = NULL
AS
SET NOCOUNT ON;
SET XACT_ABORT ON;
DECLARE @vcErrorMessage VARCHAR(4000),
@intErrorNumber INT,
@intErrorSeverity INT,
@intErrorState INT,
@intErrorLine INT,
@vcErrorProcedure VARCHAR(128);
IF XACT_STATE() = -1
GOTO ErrorHandler;
IF ERROR_NUMBER() IS NULL
GOTO ErrorHandler;
SET @intErrorNumber = ERROR_NUMBER();
SET @intErrorSeverity = ERROR_SEVERITY();
SET @intErrorState = ERROR_STATE();
SET @intErrorLine = ERROR_LINE();
SET @vcErrorProcedure = ERROR_PROCEDURE();
SET @vcErrorMessage = ERROR_MESSAGE();
INSERT INTO dbo._ErrorLogs
VALUES (
CAST(ORIGINAL_LOGIN() AS VARCHAR(128)),
CAST(HOST_NAME() AS VARCHAR(128)),
@intErrorNumber,
@intErrorSeverity,
@intErrorState,
ISNULL(OBJECT_NAME(@intProcedureID), @vcErrorProcedure),
@intErrorLine,
@vcErrorMessage,
GETDATE()
);
RAISERROR(@vcErrorMessage, @intErrorSeverity, 1);
RETURN 100;
ErrorHandler:
IF XACT_STATE() <> 0
ROLLBACK TRANSACTION;
RETURN 0;
Kullanım (TRY CATCH)
BEGIN TRY
-- YOUR CODE HERE
END TRY
BEGIN CATCH
EXEC dbo._AddErrorLog;
END CATCH;

Avantajlar
✔ DB error tracking
✔ Procedure debug kolaylığı
✔ Server crash sebeplerini bulma
✔ GM / developer log sistemi
Not
- Sadece SQL Server hatalarını loglar
- Büyük serverlarda log tablosu büyüyebilir
- Periyodik temizleme önerilir
İçeriği görüntülemek için Giriş yapın veya Kayıt olun.
