powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SSIS ExecuteSqlTask лог запроса
8 сообщений из 8, страница 1 из 1
SSIS ExecuteSqlTask лог запроса
    #39922526
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени,

Что то задался мыслью а есть ли способ залогировать инструкцию отправляемую на сервер задачей ExecuteSQLTask.

К примеру есть пакет в нем данный тип задачи. там обычная параметризированная инструкция аля

Код: sql
1.
insert into some_table ([id], [name], [date]) values (?, ?, ?);



при обработке пакет валится в ошибку "Invalid time format". Возможные причины сбоя: проблемы с этим запросом, свойство "ResultSet" установлено неправильно, параметры установлены неправильно или соединение было.

Тут ясно и понятно что я ошибся с типом параметра, но вопрос не в этом.
Мне стало интересно можно ли навесить обработчик ошибки к таску и получить в нем доступ к свойствам самого таска.
Тогда бы в обработчике можно было присвоить какой либо переменной значение свойства SqlStatementSource уровня runtime ну и далее дать отлуп куда либо.

И вот тут возник нюанс, доступа то мы вроде к самому объекту из обработчика не имеем, только к значениям системных переменных но в них не та информация которую хотелось бы получить.
...
Рейтинг: 0 / 0
SSIS ExecuteSqlTask лог запроса
    #39922528
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

конечно можно, и переменные в файл сохранить или в журнал виндовс или еще куда, например. На форме редактирования пакета есть закладка "обработчики событий".
...
Рейтинг: 0 / 0
SSIS ExecuteSqlTask лог запроса
    #39922533
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

Внимательно мой пост еще раз прочитайте. Я знаю что обработчики есть.


Ну если хотите для примера:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 <DTS:Executable DTS:ExecutableType="Microsoft.ExecuteSQLTask" DTS:refId="Package\XmlEntireLoad" DTS:ObjectName="XmlEntireLoad">
    <DTS:EventHandlers DTS:refId="Package\XmlEntireLoad.EventHandlers[OnError]" DTS:EventName="OnError">
       <DTS:Executables>
            <DTS:Executable
              DTS:refId="Package\XmlEntireLoad.EventHandlers[OnError]\eval"
              DTS:Description="Задача выражения"
              DTS:ExecutableType="Microsoft.ExpressionTask"
              DTS:ObjectName="eval">
              <DTS:Variables />
              <DTS:ObjectData>
                <ExpressionTask
                  Expression="@[User::var_error] =  <ВОТ ТУТ ТО ВОТ ЧТО ПИСАТЬ ЧТОБЫ ДОСТУЧАТЬСЯ ДО SqlStatementSource?> @[User::var_error] + &quot;\n &quot; +@[System::ErrorDescription] + &quot;\n&quot;" />
              </DTS:ObjectData>
            </DTS:Executable>
    </DTS:EventHandlers>
 </DTS:Executable>



xml может не рабочая, я кучу всего сократил.
...
Рейтинг: 0 / 0
SSIS ExecuteSqlTask лог запроса
    #39922536
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

переменные, которые передаются под вопросиками, видны в обработчике. или Вы хотите знать - какая именно строка выполнялась на сервере? Там там не строка будет.

Т.е. добавьте в обработчик С# скрипт, например, и сохраните переменные в файл.
...
Рейтинг: 0 / 0
SSIS ExecuteSqlTask лог запроса
    #39922539
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

System::ErrorCode, System::ErrorDescription, User::MyVar1, User::MyVar2
...
Рейтинг: 0 / 0
SSIS ExecuteSqlTask лог запроса
    #39922543
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов,

я хочу получить конечную инструкцию которая будет исполнена сервером.

к примеру в таске стейтмент
Код: sql
1.
 insert into tbl (a, b, c) values (?, ?, ?);




представим что таск работает в каком нибудь итеративном контейнере и запустится с разными параметрами 3 раза.

и к примеру я хочу получить файл лога в котором будет
Код: sql
1.
2.
3.
 insert into tbl (a, b, c) values ('значение 1', 10, '20200204 18:51:28');
 insert into tbl (a, b, c) values ('значение 2', 10, '20200204 18:51:29');
 insert into tbl (a, b, c) values ('значение стопицот', 10, '20200204 18:51:30');



вот в таком вот варианте идеальней всего было навесить обработчик на таск к примеру на событие OnPreExecute
в этом обработчике эвалютить переменную
@[user::var_somelog] = @[user::var_somelog] + <TaskObject>.SqlStatementSource

и уже после исполнения таска значение этой переменной записать куданибудь.
но вот тут и появляется проблема что к самому объекту (к его свойствам) который вызвал обработчик мы доступа получить не можем, максимум можем получить его имя через @[System::SourceName]

поэтому меня и интересует есть ли какой то способ достучатся до самого объекта таска
...
Рейтинг: 0 / 0
SSIS ExecuteSqlTask лог запроса
    #39922544
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

Там же OLE DB, объектная штука. На вход ему приходит как раз та строка, что в начале и список значений. Что он там дальше делает - пакету неведомо. Если это ODBC, то можно в нём самом включить трассировку и увидеть реальные команды. Но трассировка может сильно посадить производительность.
...
Рейтинг: 0 / 0
SSIS ExecuteSqlTask лог запроса
    #39922607
IDVT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Храните весь листинг таска в переменной с параметрами, в лог скидывайте собранный запрос, в переменные подставьте значения параметра


VariableSQL = " Insert into ... values( ?, ?)"

Вторым компонентом записи в лог, делайте подставку текущих значений параметров в VariableSQL и сохраняйте полученную строку
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / SSIS ExecuteSqlTask лог запроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]