Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 sys.fn_xe_file_target_read_file ?  [new]
Greenhorn
Member

Откуда:
Сообщений: 311
Добрый день.

Помогите понять почему лыжи не едут.
+ @@Version
Microsoft SQL Server 2014 - 12.0.2480.0 (X64) 
Jan 28 2015 18:53:20
Copyright (c) Microsoft Corporation
Developer Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)

+ Создаю XEvent сессию
CREATE EVENT SESSION [user_evt] ON SERVER 
ADD EVENT sqlserver.user_event(
    ACTION(package0.callstack,package0.event_sequence,sqlserver.database_id,sqlserver.session_id)) 
ADD TARGET package0.event_file(SET filename=N'C:\XEvent_Files\UserEVT.xel')
WITH (STARTUP_STATE=ON, MAX_DISPATCH_LATENCY=5 SECONDS)
GO

ALTER  EVENT SESSION [user_evt] ON SERVER 
STATE = START

+ Генерю несколько событий
declare @Val  varbinary(8000)
set @Val = Cast('Some Test' as varbinary(8000))
exec sp_trace_generateevent 82, N'UserInfo', @Val


Через пять сек. смотрю что получилось:
SELECT Top 1000 [file_name], [file_offset], e.*
FROM (VALUES
  (
      'C:\XEvent_Files\UserEVT*.xel'
    , cast(null as nvarchar(256))--'UserEVT_0_130783031106130000.xel'
    , cast(null as bigint)--5632
  )
) as f(FileMask, FirstFileName, FileOffSet)
CROSS APPLY sys.fn_xe_file_target_read_file(f.FileMask, NULL, f.FirstFileName, f.FileOffSet)
CROSS APPLY(VALUES(CAST(event_data AS XML))) as x(data)
CROSS APPLY(VALUES(x.data.value( '(event/@timestamp)[1]','datetime'))) as e(timestamp)

file_namefile_offsettimestamp
C:\XEvent_Files\UserEVT_0_130783031106130000.xel51202015-06-09 06:06:02.627
C:\XEvent_Files\UserEVT_0_130783031106130000.xel56322015-06-09 06:07:22.757
C:\XEvent_Files\UserEVT_0_130783031106130000.xel61442015-06-09 06:07:47.073


А теперь хочу со смещением:
SELECT Top 1000 [file_name], [file_offset], e.*
FROM (VALUES
  (
      'C:\XEvent_Files\UserEVT*.xel'
    , 'UserEVT_0_130783031106130000.xel'
    , 5632
  )
) as f(FileMask, FirstFileName, FileOffSet)
CROSS APPLY sys.fn_xe_file_target_read_file(f.FileMask, NULL, f.FirstFileName, f.FileOffSet)
CROSS APPLY(VALUES(CAST(event_data AS XML))) as x(data)
CROSS APPLY(VALUES(x.data.value( '(event/@timestamp)[1]','datetime'))) as e(timestamp)


Значение смещения 5632 взято из предыдущего результата - поле [file_offset]

И получаю :
Msg 25722, Level 16, State 6, Line 8
The offset 5632 is invalid for log file "UserEVT_0_130783031106130000.xel".
Specify an offset that exists in the log file and retry your query.

Google молчит.
Может здесь помогут ...
9 июн 15, 11:50    [17748716]     Ответить | Цитировать Сообщить модератору
 Re: sys.fn_xe_file_target_read_file ?  [new]
Greenhorn
Member

Откуда:
Сообщений: 311
Greenhorn,

А в ответ - уже привычная тишина

Работающий вариант:
SELECT Top 1000 [file_name], [file_offset], e.*
FROM (VALUES
  (
      'C:\XEvent_Files\UserEVT_0_130783031106130000.xel' -- Вот где
    , NULL
    , 'C:\XEvent_Files\UserEVT_0_130783031106130000.xel' -- Собака порылась !!!
    , 5632
  )
) as f(FileMask, FirstFileName, FileOffSet)
CROSS APPLY sys.fn_xe_file_target_read_file(f.FileMask, NULL, f.FirstFileName, f.FileOffSet)
CROSS APPLY(VALUES(CAST(event_data AS XML))) as x(data)
CROSS APPLY(VALUES(x.data.value( '(event/@timestamp)[1]','datetime'))) as e(timestamp)
15 июн 15, 18:56    [17773314]     Ответить | Цитировать Сообщить модератору
 Re: sys.fn_xe_file_target_read_file ?  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4279
Greenhorn
А в ответ - уже привычная тишина

Здесь, на форуме друзей, вам, как нигде, дают побыть наедине со своими мыслями, озвучить вслух свои самые безумные предположения, разложить по полочкам решение, которое до этого было сумбурно скомкано в вашей голове и
выискать в потоке полубессознательного умоиступления зерно истины...
Что же вас так огорчает?
15 июн 15, 20:26    [17773559]     Ответить | Цитировать Сообщить модератору
 Re: sys.fn_xe_file_target_read_file ?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Greenhorn
А в ответ - уже привычная тишина


А надо было скопировать из хелпа описание параметров что ли ?

initial_file_name
The first file to read from path. initial_file_name is nvarchar(260). There is no default. If null is specified as the argument all the files found in path are read.
16 июн 15, 10:09    [17774708]     Ответить | Цитировать Сообщить модератору
 Re: sys.fn_xe_file_target_read_file ?  [new]
Greenhorn
Member

Откуда:
Сообщений: 311
Glory
Greenhorn
А в ответ - уже привычная тишина


А надо было скопировать из хелпа описание параметров что ли ?

initial_file_name
The first file to read from path. initial_file_name is nvarchar(260). There is no default. If null is specified as the argument all the files found in path are read.


Да нет, проблема была в том, что при указании связанных параметров "initial_file_name", "initial_offset"
параметр "path" ДОЛЖЕН БЫТЬ РАВЕН параметру "initial_file_name". А если это не так -> получи ошибку (см. первый пост)

В BOL_е русском, английском, китайском и т.д. и т.п. такой информации нет !!!
16 июн 15, 17:07    [17777779]     Ответить | Цитировать Сообщить модератору
 Re: sys.fn_xe_file_target_read_file ?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7871
Greenhorn,

т.е. Вы верите, что по выражению "UserEVT_0_130783031106130000.xel" однозначно можно найти файл на диске?
16 июн 15, 17:48    [17778015]     Ответить | Цитировать Сообщить модератору
 Re: sys.fn_xe_file_target_read_file ?  [new]
Greenhorn
Member

Откуда:
Сообщений: 311
Владислав Колосов
Greenhorn,

т.е. Вы верите, что по выражению "UserEVT_0_130783031106130000.xel" однозначно можно найти файл на диске?

Нет, уже не верю.
Так же как и с указанием полного пути в параметре "initial_file_name" - тоже не верю.

+ Выдержка из BOL
initial_file_name

Первый файл для чтения из path.
Аргумент initial_file_name имеет тип nvarchar(260).
Значение по умолчанию отсутствует.
Если в качестве аргумента указывается значение null, выполняется чтение всех файлов, найденных в path


Где написано, что передав в параметре "path" путь к файлу/ам необходимо повторно указывать путь ?

PS. Тему можно закрывать. А если она никому не интересна, то и удалить ее ...
16 июн 15, 18:01    [17778099]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить