Я пытаюсь использовать CONTEXT_INFO
для передачи кода пользователя из хранимой процедуры в триггер DELETE для целей аудита таблиц.
Все работает нормально, однако я заметил, что длина сохраненного кода пользователяв таблице аудита было неверно.
Взять этот скрипт в качестве примера ...
declare @userCode varchar(50)
set @userCode = 'TestUser'
declare @binary_userCode varbinary(128)
set @binary_userCode = cast(@userCode as varbinary(128))
set CONTEXT_INFO @binary_userCode
declare @temp_userCode varchar(50)
set @temp_userCode = (select cast(CONTEXT_INFO() as varchar(50)))
--set @temp_userCode = rtrim(ltrim(@temp_userCode))
select @userCode, len(@userCode), @temp_userCode, len(@temp_userCode)
set CONTEXT_INFO 0x
Результаты:
len (@userCode) = 8
len (@temp_userCode) = 50
Почему переменная @temp_userCode
возвращается с длиной 50, и как я могу обрезать ее до ее первоначальной длины для сохраненияэто правильно?
Дополнительная информация:
Запуск SQL Server 2005, однако решение должно работать во всех версиях 2005 года.