2

タイム ゾーン情報をレジストリから SQL に取得すると、完全な TZI データ構造が得られます。

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'

完全なバイナリ値を返します

「0xE001000000000000C4FFFFFF00000B000000010002000000000000000000300000002000200000000000000」

しかし、次のように変数に格納すると:

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'

考えられる限り、binary/varbinary と長さ (MAX を含む) のすべての順列を試しました。

何か案は?

4

1 に答える 1

2

を使用して実行しINSERT ... EXEC、結果が挿入されるテーブルから値を読み戻します。

DECLARE @TzKey nvarchar(512)
DECLARE @TZI binary(85) 
Set @TzKey = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Pacific Standard Time'
declare @Results table (Value sysname,Data varbinary(300))
insert into @Results
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE', @TzKey, 'TZI' --, @TZI OUTPUT
select @TZI = Data from @Results

(文書化されていない手順の使用/依存に関する通常の警告を挿入)

于 2013-03-12T07:13:48.670 に答える