如果我從註冊表獲取到SQL我的時區的信息,我得到充分的TZI數據結構:爲什麼我的TSQL varbinary數據越來越截斷
DECLARE @TzKey nvarchar(512)
Set @TzKey = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Pacific Standard Time'
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE', @TzKey, 'TZI'
它返回完整的二進制值
'0xE001000000000000C4FFFFFF00000B0000000100020000000000000000000300000002000200000000000000'
但是,如果我把它保存在像這樣的變量:
DECLARE @TzKey nvarchar(512)
DECLARE @TZI binary(85)
Set @TzKey = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Pacific Standard Time'
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE', @TzKey, 'TZI', @TZI OUTPUT
然後SELECT @TZI AS TzInfo
回報'0xE001'
我曾嘗試二進制/ VARBINARY和長度(包括MAX)的每一個排列,我能想到的。
任何想法?
' xp_regread'是一個未記錄的存儲過程 - 但可能輸出參數只是用於返回smallint值,並且在內部(在某個點)該值被截斷爲16位。無論你給它什麼類型的變量,它只會給你在該參數中的16位。 – 2013-03-12 07:11:19