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
結果:
長さ (@userCode) = 8
長さ (@temp_userCode) = 50
変数の長さが 50 に戻ってくるのはなぜ@temp_userCode
ですか? また、正しく格納するために元の長さに戻すにはどうすればよいですか?
さらに詳しい情報:
SQL Server 2005 を実行していますが、ソリューションは 2005 以降のすべてのバージョンで動作する必要があります。