Skip to content

Instantly share code, notes, and snippets.

@ezhov-da
Last active March 10, 2019 12:19
Show Gist options
  • Save ezhov-da/f981bc15c3da34b983f6599889c074cb to your computer and use it in GitHub Desktop.
Save ezhov-da/f981bc15c3da34b983f6599889c074cb to your computer and use it in GitHub Desktop.
sql mssql логирование
[code:]sql[:code]use ____________________________________
go
-- execute OTZ.dbo.prc_refresh_T_RC_WHS_LNK
create ____________________________________ as
begin
------------------------------------------------------------------------
--> автор : ____________________________________
--> дата создания : ____________________________________
--> описание : ____________________________________
------------------------------------------------------------------------
--ЛОГИРОВАНИЕ-----------------------------------------------------------
DECLARE @TEXT_LOG VARCHAR(max) --переменная, которая будет содержать текст описания
,@COUNTER_STEP INT = 0 --счетчик шагов
,@USERNAME_NOW varchar(50) = '_______________________' --имя пользователя
,@PRC_NAME_NOW varchar(100) = '_______________________' --имя процедуры
------------------------------------------------------------------------
begin try
begin tran
--ЛОГИРОВАНИЕ-----------------------------------------------------------
/*
* очень важен порядок присвоения переменных,
* так как @@ROWCOUNT в обратном порядке работает некорректно
*/
set @TEXT_LOG = '____________________________________'
set @COUNTER_STEP = @COUNTER_STEP + 1
exec OTZ.dbo.prc_E_log
@USERNAME = @USERNAME_NOW
,@PRC_NAME = @PRC_NAME_NOW
,@RUN_ID = 1
,@STEP = @COUNTER_STEP
,@COMMENT = @TEXT_LOG
,@LEVEL = 0
,@PARENT = 0
------------------------------------------------------------------------
| К
| О
| Д
|
| Д
| Л
| Я
|
| В
| С
| Т
| А
| В
| К
| И
--ЛОГИРОВАНИЕ-----------------------------------------------------------
/*
* очень важен порядок присвоения переменных,
* так как @@ROWCOUNT в обратном порядке работает некорректно
*/
set @TEXT_LOG = '____________________________________' + cast(@@ROWCOUNT as varchar(10))
set @COUNTER_STEP = @COUNTER_STEP + 1
exec OTZ.dbo.prc_E_log
@USERNAME = @USERNAME_NOW
,@PRC_NAME = @PRC_NAME_NOW
,@RUN_ID = 1
,@STEP = @COUNTER_STEP
,@COMMENT = @TEXT_LOG
,@LEVEL = 0
,@PARENT = 0
------------------------------------------------------------------------
commit tran
end try
begin catch
rollback tran
SET @TEXT_LOG = concat
(
'<error>'
,char(10)
,'<numError>'
,'номер ошибки: '
,CAST(ERROR_NUMBER() as varchar(20))
,'</numError>'
,char(10)
,'<severity>'
,'степень серьезности ошибки: '
,CAST(ERROR_SEVERITY() as varchar(20))
,'</severity>'
,char(10)
,'<code>'
,'код состояния ошибки: '
,CAST(ERROR_STATE() as varchar(20))
,'</code>'
,char(10)
,'<nameProc>'
,'имя хранимой процедуры: '
,CAST(ERROR_PROCEDURE() as varchar(300))
,'</nameProc>'
,char(10)
,'<numRow>'
,'номер строки, которая вызвала ошибку: '
,CAST(ERROR_LINE() as varchar(20))
,'</numRow>'
,char(10)
,'<fullText>'
,'полный текст сообщения об ошибке: '
,CAST(ERROR_MESSAGE() as varchar(max))
,'</fullText>'
,char(10)
,'</error>'
)
--ЛОГИРОВАНИЕ-----------------------------------------------------------
exec OTZ.dbo.prc_E_log
@USERNAME = @USERNAME_NOW
,@PRC_NAME = @PRC_NAME_NOW
,@RUN_ID = 1
,@STEP = -1 --в случае ошибки, чтоб можно было легко найти
,@COMMENT = @TEXT_LOG
,@LEVEL = 0
,@PARENT = 0
------------------------------------------------------------------------
end catch
end
end
[/code]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment