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

Откуда:
Сообщений: 62
Всем теплой зимы!

Беда случилась при работе DTS пакета. В ScriptTask запускаю макрос, который копирует шапку на лист с данными. В шапке есть формулы, которые размножаю по листу.
'выделяем формулы
Range("BM24:CC24").Select
'копируем
Selection.Copy
'выделяем диапазон
Range("BM26", Range("BM26").End(xlDown)).Select
'вставляем формулы
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _     SkipBlanks:=False, Transpose:=False



С недавних пор, в ScriptTask стала возникать ошибка
Адресат вызвал исключение.
 в System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   в System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   в System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   в System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
   в Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTATaskScriptingEngine.ExecuteScript()


Причем, появление ошибки зависит от кол-ва и содержимого данных.

Методом "тыка" нашел, что причина ошибки - формула большого размера. Если ее убрать, то ошибка не возникает.
Формула
+
=ЕСЛИ(E24=-1;ОКРУГЛ(ЕСЛИ(W24=X24;ЕСЛИ(AO24="ДА";ЕСЛИ(AQ24="ДА";ЕСЛИ(AW24+AX24+AY24+AZ24+BA24+BB24>0;(Y24-T24*AG24)*(AW24+AX24+AY24+AZ24+BA24+BB24);ЕСЛИ(Y24-T24*AG24>0;(Y24-T24*AG24)*(AW24+AX24+AY24+AZ24+BA24+BB24);(T24*AG24-Y24)*(AW24+AX24+AY24+AZ24+BA24+BB24)));ЕСЛИ(L24*AL24+AX24+AY24+AZ24+BA24+BB24>0;(Y24-T24*AG24)*(L24*AL24+AX24+AY24+AZ24+BA24+BB24);ЕСЛИ(Y24-T24*AG24>0; (Y24-T24*AG24)*(L24*AL24+AX24+AY24+AZ24+BA24+BB24);(T24*AG24-Y24)*(L24*AL24+AX24+AY24+AZ24+BA24+BB24))));ЕСЛИ(AQ24="ДА";ЕСЛИ(AW24+AX24+AY24+M24*AL24+BA24+BB24>0;(Y24-T24*AG24)*(AW24+AX24+AY24+M24*AL24+BA24+BB24);ЕСЛИ(Y24-T24*AG24>0;(Y24-T24*AG24)*(AW24+AX24+AY24+M24*AL24+BA24+BB24);(T24*AG24-Y24)*(AW24+AX24+AY24+M24*AL24+BA24+BB24)));ЕСЛИ(AL24*(L24+M24)+AX24+AY24+BA24+BB24>0;(Y24-T24*AG24)*(AL24*(L24+M24)+AX24+AY24+BA24+BB24);ЕСЛИ(Y24-T24*AG24>0;(Y24-T24*AG24)*(AL24*(L24+M24)+AX24+AY24+BA24+BB24);(T24*AG24-Y24)*(AL24*(L24+M24)+AX24+AY24+BA24+BB24)))));ЕСЛИ(AO24="да";ЕСЛИ(AZ24+BA24+BB24>0;(Y24-T24*AG24)*(AZ24+BA24+BB24);ЕСЛИ(Y24-T24*AG24>0;(Y24-T24*AG24)*(AZ24+BA24+BB24);(T24*AG24-Y24)*(AZ24+BA24+BB24)));ЕСЛИ(AL24*M24+BA24+BB24>0;(Y24-T24*AG24)*(AL24*M24+BA24+BB24);ЕСЛИ(Y24-T24*AG24>0;(Y24-T24*AG24)*(AL24*M24+BA24+BB24);(T24*AG24-Y24)*(AL24*M24+BA24+BB24)))));2);ОКРУГЛ(ЕСЛИ(W24=X24;ЕСЛИ(AO24="ДА";ЕСЛИ(AQ24="ДА";ЕСЛИ(AW24+AX24+AY24+AZ24+BA24+BB24>0;(Y24-T24*AG24)*(AW24+AX24+AY24+AZ24+BA24+BB24);ЕСЛИ(Y24-T24*AG24>0;(Y24-T24*AG24)*(AW24+AX24+AY24+AZ24+BA24+BB24);(T24*AG24-Y24)*(AW24+AX24+AY24+AZ24+BA24+BB24)));ЕСЛИ(L24*AL24>0;ЕСЛИ(AX24+AY24+AZ24+BA24+BB24>0;(Y24-T24*AG24)*L24*AL24+ЕСЛИ(F24>0;(Y24-T24*AA24*AB24*AC24);(Y24-T24*AG24))*(AX24+AY24+AZ24+BA24+BB24);ЕСЛИ(Y24-T24*AG24>0;ЕСЛИ(Y24-T24*AA24*AB24*AC24>0;(Y24-T24*AG24)*L24*AL24+ЕСЛИ(F24>0;(Y24-T24*AA24*AB24*AC24);(Y24-T24*AG24))*(AX24+AY24+AZ24+BA24+BB24);(Y24-T24*AG24)*L24*AL24+ЕСЛИ(F24>0;(T24*AA24*AB24*AC24-Y24);(Y24-T24*AG24))*(AX24+AY24+AZ24+BA24+BB24));ЕСЛИ(Y24-T24*AA24*AB24*AC24>0;(Y24-T24*AG24)*L24*AL24+ЕСЛИ(F24>0;(Y24-T24*AA24*AB24*AC24);(T24*AG24-Y24))*(AX24+AY24+AZ24+BA24+BB24);(Y24-T24*AG24)*L24*AL24+ЕСЛИ(F24>0;(T24*AA24*AB24*AC24-Y24);(T24*AG24-Y24))*(AX24+AY24+AZ24+BA24+BB24))));ЕСЛИ(AX24+AY24+AZ24+BA24+BB24>0;ЕСЛИ(F24>0;(Y24-T24*AA24*AB24*AC24);(Y24-T24*AG24))*(AX24+AY24+AZ24+BA24+BB24);ЕСЛИ(Y24-T24*AG24>0;ЕСЛИ(Y24-T24*AA24*AB24*AC24>0;ЕСЛИ(F24>0;(Y24-T24*AA24*AB24*AC24);(Y24-T24*AG24))*(AX24+AY24+AZ24+BA24+BB24);ЕСЛИ(F24>0;(T24*AA24*AB24*AC24-Y24);(Y24-T24*AG24))*(AX24+AY24+AZ24+BA24+BB24));ЕСЛИ(Y24-T24*AA24*AB24*AC24>0;ЕСЛИ(F24>0;(Y24-T24*AA24*AB24*AC24);(T24*AG24-Y24))*(AX24+AY24+AZ24+BA24+BB24);ЕСЛИ(F24>0;(T24*AA24*AB24*AC24-Y24);(T24*AG24-Y24))*(AX24+AY24+AZ24+BA24+BB24))))));ЕСЛИ(AQ24="ДА";ЕСЛИ(M24*AL24>0;ЕСЛИ(AX24+AY24+AW24+BA24+BB24>0;(Y24-T24*AG24)*M24*AL24+ЕСЛИ(F24>0;(Y24-T24*AA24*AB24*AC24);(Y24-T24*AG24))*(AX24+AY24+AW24+BA24+BB24);ЕСЛИ(Y24-T24*AG24>0;ЕСЛИ(Y24-T24*AA24*AB24*AC24>0;(Y24-T24*AG24)*M24*AL24+ЕСЛИ(F24>0;(Y24-T24*AA24*AB24*AC24);(Y24-T24*AG24))*(AX24+AY24+AW24+BA24+BB24);(Y24-T24*AG24)*M24*AL24+ЕСЛИ(F24>0;(T24*AA24*AB24*AC24-Y24);(Y24-T24*AG24))*(AX24+AY24+AW24+BA24+BB24));ЕСЛИ(Y24-T24*AA24*AB24*AC24>0;(Y24-T24*AG24)*M24*AL24+ЕСЛИ(F24>0;(Y24-T24*AA24*AB24*AC24);(T24*AG24-Y24))*(AX24+AY24+AW24+BA24+BB24);(Y24-T24*AG24)*M24*AL24+ЕСЛИ(F24>0;(T24*AA24*AB24*AC24-Y24);(T24*AG24-Y24))*(AX24+AY24+AW24+BA24+BB24))));ЕСЛИ(AX24+AY24+AW24+BA24+BB24>0;ЕСЛИ(F24>0;(Y24-T24*AA24*AB24*AC24);(Y24-T24*AG24))*(AX24+AY24+AW24+BA24+BB24);ЕСЛИ(Y24-T24*AG24>0;ЕСЛИ(Y24-T24*AA24*AB24*AC24>0;ЕСЛИ(F24>0;(Y24-T24*AA24*AB24*AC24);(Y24-T24*AG24))*(AX24+AY24+AW24+BA24+BB24);ЕСЛИ(F24>0;(T24*AA24*AB24*AC24-Y24);(Y24-T24*AG24))*(AX24+AY24+AW24+BA24+BB24));ЕСЛИ(Y24-T24*AA24*AB24*AC24>0;ЕСЛИ(F24>0;(Y24-T24*AA24*AB24*AC24);(T24*AG24-Y24))*(AX24+AY24+AW24+BA24+BB24);ЕСЛИ(F24>0;(T24*AA24*AB24*AC24-Y24);(T24*AG24-Y24))*(AX24+AY24+AW24+BA24+BB24)))));ЕСЛИ((L24+M24)*AL24>0;ЕСЛИ(AX24+AY24+ BA24+BB24>0;(Y24-T24*AG24)* (L24+M24)*AL24+ЕСЛИ(F24>0;(Y24-T24*AA24*AB24*AC24);(Y24-T24*AG24))*(AX24+AY24+ BA24+BB24);ЕСЛИ(Y24-T24*AG24>0;ЕСЛИ(Y24-T24*AA24*AB24*AC24>0;(Y24-T24*AG24)* (L24+M24)*AL24+ЕСЛИ(F24>0;(Y24-T24*AA24*AB24*AC24);(Y24-T24*AG24))*(AX24+AY24+ BA24+BB24);(Y24-T24*AG24)* (L24+M24)*AL24+ЕСЛИ(F24>0;(T24*AA24*AB24*AC24-Y24);(Y24-T24*AG24))*(AX24+AY24+ BA24+BB24));ЕСЛИ(Y24-T24*AA24*AB24*AC24>0;(Y24-T24*AG24)* (L24+M24)*AL24+ЕСЛИ(F24>0;(Y24-T24*AA24*AB24*AC24);(T24*AG24-Y24))*(AX24+AY24+ BA24+BB24);(Y24-T24*AG24)*(L24+M24)*AL24+ЕСЛИ(F24>0;(T24*AA24*AB24*AC24-Y24);(T24*AG24-Y24))*(AX24+AY24+ BA24+BB24))));ЕСЛИ(AX24+AY24+ BA24+BB24>0;ЕСЛИ(F24>0;(Y24-T24*AA24*AB24*AC24);(Y24-T24*AG24))*(AX24+AY24+ BA24+BB24);ЕСЛИ(Y24-T24*AG24>0;ЕСЛИ(Y24-T24*AA24*AB24*AC24>0;ЕСЛИ(F24>0;(Y24-T24*AA24*AB24*AC24);(Y24-T24*AG24))*(AX24+AY24+ BA24+BB24);ЕСЛИ(F24>0;(T24*AA24*AB24*AC24-Y24);(Y24-T24*AG24))*(AX24+AY24+ BA24+BB24));ЕСЛИ(Y24-T24*AA24*AB24*AC24>0;ЕСЛИ(F24>0;(Y24-T24*AA24*AB24*AC24);(T24*AG24-Y24))*(AX24+AY24+ BA24+BB24);ЕСЛИ(F24>0;(T24*AA24*AB24*AC24-Y24);(T24*AG24-Y24))*(AX24+AY24+ BA24+BB24)))))));ЕСЛИ(AO24="да";ЕСЛИ(AZ24+BA24+BB24>0;(Y24-T24*AG24)*(AZ24+BA24+BB24);ЕСЛИ(Y24-T24*AG24>0;(Y24-T24*AG24)*(AZ24+BA24+BB24);(T24*AG24- Y24)*(AZ24+BA24+BB24)));ЕСЛИ(M24*AL24>0;ЕСЛИ(BA24+BB24>0;ЕСЛИ(F24>0;(Y24-T24*AG24)*AL24*M24+(Y24-T24*AA24*AB24*AC24)*(BA24+BB24);(Y24-T24*AG24)*(AL24*M24+BA24+BB24));ЕСЛИ(Y24-T24*AG24>0;ЕСЛИ(Y24-T24*AA24*AB24*AC24>0;ЕСЛИ(F24>0;(Y24-T24*AG24)*AL24*M24+(Y24-T24*AA24*AB24*AC24)*(BA24+BB24);(Y24-T24*AG24)*(AL24*M24+BA24+BB24));ЕСЛИ(F24>0;(Y24-T24*AG24)*AL24*M24+(T24*AA24*AB24*AC24- Y24)*(BA24+BB24);(Y24-T24*AG24)*(AL24*M24+BA24+BB24)));ЕСЛИ(Y24-T24*AA24*AB24*AC24>0;ЕСЛИ(F24>0;(Y24-T24*AG24)*AL24*M24+(Y24-T24*AA24*AB24*AC24)*(BA24+BB24);(Y24-T24*AG24)*AL24*M24+ (T24*AG24-Y24)*(BA24+BB24));ЕСЛИ(F24>0;(Y24-T24*AG24)*AL24*M24+(T24*AA24*AB24*AC24- Y24)*(BA24+BB24);(Y24-T24*AG24)*AL24*M24+ (T24*AG24-Y24)*(BA24+BB24)))));ЕСЛИ(BA24+BB24>0;ЕСЛИ(F24>0;(Y24-T24*AA24*AB24*AC24);(Y24-T24*AG24))*(BA24+BB24);ЕСЛИ(Y24-T24*AG24>0;ЕСЛИ(Y24-T24*AA24*AB24*AC24>0;ЕСЛИ(F24>0;(Y24-T24*AA24*AB24*AC24);(Y24-T24*AG24))*(BA24+BB24);ЕСЛИ(F24>0;(T24*AA24*AB24*AC24-Y24);(Y24-T24*AG24))*(BA24+BB24));ЕСЛИ(Y24-T24*AA24*AB24*AC24>0;ЕСЛИ(F24>0;(Y24-T24*AA24*AB24*AC24);(T24*AG24-Y24))*(BA24+BB24);ЕСЛИ(F24>0;(T24*AA24*AB24*AC24-Y24);(T24*AG24-Y24))*(BA24+BB24)))))));2))


Кто может расшифровать ошибку. Можно ли более глубже копнуть в проблему?
22 окт 15, 14:58    [18312237]     Ответить | Цитировать Сообщить модератору
 Re: Запуск макроса в SSIS  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7332
hex10, что же мешает использовать шаблоны xls или reporting services, к примеру?
22 окт 15, 15:05    [18312290]     Ответить | Цитировать Сообщить модератору
 Re: Запуск макроса в SSIS  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4309
Владислав Колосов
hex10, что же мешает использовать шаблоны xls или reporting services, к примеру?


Или OpenXml
22 окт 15, 15:08    [18312321]     Ответить | Цитировать Сообщить модератору
 Re: Запуск макроса в SSIS  [new]
hex10
Member

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

Я и использую шаблон XLS. В нем шапка и формулы. В DTS пакете создается еще один лист, в который выгружаются данные из сервера. Далее шапка вставляется в этот лист, а формулы размножаются по выгруженным строкам. Лист с шапкой удаляется.
22 окт 15, 15:09    [18312330]     Ответить | Цитировать Сообщить модератору
 Re: Запуск макроса в SSIS  [new]
hex10
Member

Откуда:
Сообщений: 62
Однажды наталкивался на способ логирования ScriptTask, но к сожалению сейчас не могу вспомнить, что нужно добавить в скрипт, чтобы более детально изучить ошибку.
Было там что то типа
Err.GetException.ToString()
22 окт 15, 15:19    [18312435]     Ответить | Цитировать Сообщить модератору
 Re: Запуск макроса в SSIS  [new]
hex10
Member

Откуда:
Сообщений: 62
Решил проблему убрав из макроса копирование ячеек с формулами. Вместо этого добавил еще один макрос, пусть клиент сам запускает)
27 окт 15, 08:02    [18330794]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Запуск макроса в SSIS  [new]
hex10
Member

Откуда:
Сообщений: 62
И снова здравствуйте!)))

После переезда на новый SQL сервер
Microsoft SQL Server 2016 (SP1-GDR) (KB4505219) - 13.0.4259.0 (X64) Jun 15 2019 19:20:12 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows Server 2019 Standard 6.3 <X64> (Build 17763: ) (Hypervisor)

сломались DTS пакеты, в которых использовался ScriptTask.

Сломались в плане того, что при запуске пакетов (размещенных в SSIS) через DTExec, пакет зависает на шаге ScriptTask
Пакет при этом имеет версию TargetServerVersion = SQL Server 2016
В ScriptTask версия VB 2015

Если делать upgrade пакета до версии SQL Server 2017 и создавать ScriptTask с версией VB 2017, то пакет завершается без ошибок, но шаг ScriptTask не выполняется!

Кто-нибудь сталкивался с таким?
13 фев 20, 08:47    [22078966]     Ответить | Цитировать Сообщить модератору
 Re: Запуск макроса в SSIS  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4309
hex10,

Расшифруйте "Сломались". Например, приведите текст ошибки. Может вам просто библиотеки какие-то надо доставить.
13 фев 20, 09:29    [22078980]     Ответить | Цитировать Сообщить модератору
 Re: Запуск макроса в SSIS  [new]
hex10
Member

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

Сломались => не выполняется ScriptTask
Ошибок не возникает. У пакета Successful (0)
13 фев 20, 10:03    [22079002]     Ответить | Цитировать Сообщить модератору
 Re: Запуск макроса в SSIS  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4082
hex10
И снова здравствуйте!)))

После переезда на новый SQL сервер
Microsoft SQL Server 2016 (SP1-GDR) (KB4505219) - 13.0.4259.0 (X64) Jun 15 2019 19:20:12 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows Server 2019 Standard 6.3 <X64> (Build 17763: ) (Hypervisor)

сломались DTS пакеты, в которых использовался ScriptTask.

Сломались в плане того, что при запуске пакетов (размещенных в SSIS) через DTExec, пакет зависает на шаге ScriptTask
Пакет при этом имеет версию TargetServerVersion = SQL Server 2016
В ScriptTask версия VB 2015

Если делать upgrade пакета до версии SQL Server 2017 и создавать ScriptTask с версией VB 2017, то пакет завершается без ошибок, но шаг ScriptTask не выполняется!

Кто-нибудь сталкивался с таким?

Запустите в режиме отладки, поставьте точки прерывания в скрипте.
Если отладка невозможна, то сделайте вывод сообщений на каждом этапе.
Найдете где виснет.
Самая частая проблема это дидлок переменных.
13 фев 20, 10:23    [22079016]     Ответить | Цитировать Сообщить модератору
 Re: Запуск макроса в SSIS  [new]
hex10
Member

Откуда:
Сообщений: 62
Починили!

Зависание было из-за заблокированных процессов dtexec на сервере.

ScriptTask заработал после того, как снесли Management Studio 2017 и поставили 2016 версию.
13 фев 20, 13:59    [22079254]     Ответить | Цитировать Сообщить модератору
 Re: Запуск макроса в SSIS  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3129
hex10
Починили!

Зависание было из-за заблокированных процессов dtexec на сервере.

ScriptTask заработал после того, как снесли Management Studio 2017 и поставили 2016 версию.
Известная проблема. Если версия MSSQL - 2016 или более ранняя, то для деплоя SSIS-пакетов, содержащих Script Task, надо использовать SSMS исключительно той же версии, что и сам сиквел. Ну т.е. на самом деле ISDeploymentWizard.exe из правильной папки (для 2016 это ...\130\...).

Новая студия, которая 17 - 18+, использует визард из папки 140, который что-то ломает в свойствах скрипт-тасков в процессе деплоя.

Я вроде упоминал об этой проблеме на форуме, но что-то ничего не находится. Вот ссылка на SO с описанием.
13 фев 20, 16:08    [22079376]     Ответить | Цитировать Сообщить модератору
 Re: Запуск макроса в SSIS  [new]
hex10
Member

Откуда:
Сообщений: 62
Ennor Tiegael, спасибо!


hex10
Починили!

Зависание было из-за заблокированных процессов dtexec на сервере.



Починили, да не все:(

Продолжает зависать. Видимо проблема в диалоговом окне Ворда "При последнем открытии документа возникла серьезная ошибка. Вы действительно хотите открыть его?".

Алгоритм проверки:
1. Запуск пакета из CMD - ошибок нет.
2. Запуск пакета из студии - виснет.
3. Убиваю процесс Winword.exe на сервере
4. Запуск пакета из CMD - окно с ошибкой
5. В настройках Ворда включаю файл (Параметры - Надстройки - Управление - Отключенные элементы.)
6. Запуск пакета из CMD - ошибок нет.

вариант 2.

1. Запуск пакета из CMD - ошибок нет.
2. Запуск пакета из студии - виснет.
3. Убиваю процесс Winword.exe на сервере
4. Запуск пакета из CMD - окно с ошибкой
5. В настройках Ворда включаю файл (Параметры - Надстройки - Управление - Отключенные элементы.)
6. Запуск пакета из студии - виснет.

Как-нибудь можно программно запретить это сообщение?

Сообщение было отредактировано: 14 фев 20, 09:44
14 фев 20, 09:42    [22079754]     Ответить | Цитировать Сообщить модератору
 Re: Запуск макроса в SSIS  [new]
hex10
Member

Откуда:
Сообщений: 62
hex10
Ennor Tiegael, спасибо!


hex10
Починили!

Зависание было из-за заблокированных процессов dtexec на сервере.



Починили, да не все:(



Сделал еще такую проверку.

разместил строку запуска пакета в батнике.
в cmd на сервере Батник выполняется без ошибок

При запуске батника из студии через xp_cmdshell, запрос виснет, пока не убьешь процесс winword.exe

Сообщение было отредактировано: 14 фев 20, 15:52
14 фев 20, 15:52    [22080138]     Ответить | Цитировать Сообщить модератору
 Re: Запуск макроса в SSIS  [new]
Владислав Колосов
Member

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

CMD и xp_cmdshell выполняют разные пользователи.
14 фев 20, 16:25    [22080166]     Ответить | Цитировать Сообщить модератору
 Re: Запуск макроса в SSIS  [new]
hex10
Member

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

Добавил команду WHOAMI /USER в батник
Результат - пользователь такой же, как при запуске CMD

+ в свойствах Server Proxy Account указан этот же пользователь
15 фев 20, 12:08    [22080471]     Ответить | Цитировать Сообщить модератору
 Re: Запуск макроса в SSIS  [new]
Владислав Колосов
Member

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

ну тогда не знаю. У меня были проблемы с прямым выполнением опубликованного пакета из-за проблем безопасности, но через джоб пакет отрабатывал прекрасно.
15 фев 20, 15:32    [22080503]     Ответить | Цитировать Сообщить модератору
 Re: Запуск макроса в SSIS  [new]
Гулин Федор
Member

Откуда: МИНСК
Сообщений: 1186
Продолжает зависать. Видимо проблема в диалоговом окне Ворда "При последнем открытии документа возникла серьезная ошибка. Вы действительно хотите открыть его?".


если виснет в VS
то надо сделать как-то чтобы не висло
раз проблема то воспроизводится - ну так и решайте ее по частям
или делая новый пакет или убирая куски из старого - чтобы опрделить где виснет.
ну а если не поможет - может как то вынсти кусок из SSIS пакета - как запуска cmd отдельным шагом ?
17 фев 20, 13:21    [22081288]     Ответить | Цитировать Сообщить модератору
 Re: Запуск макроса в SSIS  [new]
hex10
Member

Откуда:
Сообщений: 62
Гулин Федор,

нашел где виснет.
Виснет при открытии файла.
Нашел в системном журнале Винды такое:
Microsoft Word
При последней попытке открыть файл "file.dot" произошла серьезная ошибка. Вы действительно хотите открыть его?
P1: 700164
P2: 15.0.4569.1504
P3: ajeusP4:




При этом захожу в Ворд: Файл - Параметры - Надстройки - Управление - Отключенные объекты
и там пусто...

Сообщение было отредактировано: 17 фев 20, 15:59
17 фев 20, 15:59    [22081497]     Ответить | Цитировать Сообщить модератору
 Re: Запуск макроса в SSIS  [new]
hex10
Member

Откуда:
Сообщений: 62
hex10

Виснет при открытии файла.


Создал новый пакет. В нем просто открыть/закрыть файл Шаблон Ворд.

    Public Sub Main()
        Dim wObj As Word.Application
        Dim oDoc As Word.Document

        wObj = CType(CreateObject("Word.Application"), Word.Application)
        wObj.Application.DisplayAlerts = False
        oDoc = wObj.Documents.Open("c:\file.dot")
        oDoc.SaveAs()
        wObj.Application.DisplayAlerts = True
        wObj.Quit()
        wObj = Nothing

        Dts.TaskResult = ScriptResults.Success
    End Sub


При запуске в VS локально, пакет отрабатывает без ошибок.
При запуске на сервере через CMD, пакет отрабатывает без ошибок.

При запуске из SSMS через xp_cmdshell, запрос зависает. При этом на сервере видно, что файл остается открытым.

К сообщению приложен файл. Размер - 10Kb


Сообщение было отредактировано: 18 фев 20, 08:30
18 фев 20, 08:30    [22081839]     Ответить | Цитировать Сообщить модератору
 Re: Запуск макроса в SSIS  [new]
hex10
Member

Откуда:
Сообщений: 62
hex10
Виснет при открытии файла.


Добавил создание текстового файла после открытия Ворда.

Dim fs As FileStream = File.Create(path)
fs.Close()

    Public Sub Main()
        Dim wObj As Word.Application
        Dim oDoc As Word.Document
        Dim path As String = "c:\end.txt"
        wObj = CType(CreateObject("Word.Application"), Word.Application)
        wObj.Application.DisplayAlerts = False
        oDoc = wObj.Documents.Open(Dts.Variables("file").Value)
        Dim fs As FileStream = File.Create(path)
        fs.Close()
        oDoc.Save()
        wObj.Application.DisplayAlerts = True
        wObj.Quit()
        wObj = Nothing
        Dts.TaskResult = ScriptResults.Success
    End Sub


При запуске из CMD видно, что Ворд открывается/закрывается (мелькает создание системного файла), затем появляется текстовый файл.
При запуске из SSMS видно, что Ворд открывается/закрывается и... дальше ничего не происходит. Запрос при этом продолжает висеть пока не убьешь процесс winword.exe
18 фев 20, 15:37    [22082284]     Ответить | Цитировать Сообщить модератору
 Re: Запуск макроса в SSIS  [new]
hex10
Member

Откуда:
Сообщений: 62
Сделал! заработало

В свойствах DCOM , Вкладка - Удостоверение
указал пользователя, по которым запускается SQL сервер.

К сообщению приложен файл. Размер - 35Kb
26 фев 20, 08:08    [22086990]     Ответить | Цитировать Сообщить модератору
 Re: Запуск макроса в SSIS  [new]
istrebitel
Member

Откуда:
Сообщений: 36
При работе с офисом из под службы нужно создать каталоги
C:\Windows\System32\config\systemprofile\Desktop для x86
C:\Windows\SysWOW64\config\systemprofile\Desktop для x64
Automating Office via Windows Service on Server 2008
26 фев 20, 08:33    [22086999]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить