|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Добрый день, У меня есть скрипт PowerwShell, который прекрасно работает если его запустить вручную. Если я его помещаю в джобу, то получаю ошибку: Код: sql 1. 2. 3. 4. 5. 6. 7. 8.
Тип шага джобы: "Operating system(CmdExec)" Команда: Код: powershell 1.
Если закоментить вторую строчку в команде ниже, то все работает: Код: powershell 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 09:34 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Ну дык, твоя учетная запись и учетная запись Агента имеют разные права на сервере. В том числе и на удаленном сервере. ЗЫ. Самое правильное - ЯВНО авторизоваться на удаленном сервере в скрипте powershell. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 09:58 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
aleks222 Ну дык, твоя учетная запись и учетная запись Агента имеют разные права на сервере. В том числе и на удаленном сервере. ЗЫ. Самое правильное - ЯВНО авторизоваться на удаленном сервере в скрипте powershell. Я этот шаг выполняю через прокси с credentials с моей учетной записью. Это чтобы не возникло проблем с правами. Дело все-таки в "Write-SqlTableData". Без нее к серверу все прекрасно подключается. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 10:37 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Errorlog сиквела смотрите, чтобы узнать что скрывается за "Failed to connect to server server2\instance2" ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 10:44 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Roust_m Без нее к серверу все прекрасно подключается. Наивный. Ну... не пиши данные на сервер. Только, ведь, тебя это не устроит. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 10:46 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
invm Errorlog сиквела смотрите, чтобы узнать что скрывается за "Failed to connect to server server2\instance2" Единственное сообщение за сегодня: Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 11:09 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
aleks222 Roust_m Без нее к серверу все прекрасно подключается. Наивный. Ну... не пиши данные на сервер. Только, ведь, тебя это не устроит. Ну хорошо, а как мне явно авторизоваться на сервере? Ведь у меня их два: $SrvSource и $SrvDestination Код: powershell 1. 2.
Причем, $SrvDestination он не удаленный, на нем сама джоба и исполняется. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 11:12 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Roust_m, Если в errorlog нету сообщений вида login failed - значит либо до соединения с сервером вообще не доходит, либо смотрите не тот (не там) errorlog ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 11:22 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
invm Roust_m, Если в errorlog нету сообщений вида login failed - значит либо до соединения с сервером вообще не доходит, либо смотрите не тот (не там) errorlog ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 11:27 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Roust_m, Пара наивных вопросов: 0. Сервера в одном домене? Имена полные? 1. Пробовали ли создать явное описание подключения? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 11:47 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
env Roust_m, Пара наивных вопросов: 0. Сервера в одном домене? Имена полные? 1. Пробовали ли создать явное описание подключения? Да в одном. Я видоизменил скрипт: Код: powershell 1. 2. 3.
В этом виде все работает. Как только начинаю использовать Write-SqlTableData, все ломается нафик. :( ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 12:13 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Похоже я начинаю нащупывать проблему. Перед выполнением Код: powershell 1. 2.
Я перезаписал запрос, сделав его очень маленьким: Код: powershell 1.
После этого все начало работать и в джобе. Похоже дело в длине запроса. Когда он большой, то Write-SqlTableData начинает глючить. Мой реальный запрос таков: Код: powershell 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82.
Осталось понять, как этот скрипт заставить работать в джобе и большим и сложным запросом. Хранимые процедуры или вообще какие-либо объекты на сервере $SrvSource я создавать не могу. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 12:39 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Roust_m, авторЯ перезаписал запрос, сделав его очень маленьким: $Query = "select name from master.sys.databases (nolock) where database_id > 5" Дело не в размере, это запрос никуда ничего не записывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 13:02 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Владислав Колосов Roust_m, авторЯ перезаписал запрос, сделав его очень маленьким: $Query = "select name from master.sys.databases (nolock) where database_id > 5" Дело не в размере, это запрос никуда ничего не записывает. ну логично тогда попробовать элементарный апдейт-Insert в тестовую таблицу и глянуть прокатит или нет чтобы локализовать проблему. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 13:34 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Гулин Федор Владислав Колосов Roust_m, пропущено... Дело не в размере, это запрос никуда ничего не записывает. ну логично тогда попробовать элементарный апдейт-Insert в тестовую таблицу и глянуть прокатит или нет чтобы локализовать проблему. Гораздо логичнее - перестать жрать кактус. Если у тредстартера фсе это безобразие творится на ОДНОМ сервере, то нахера ваще Write-SqlTableData? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 13:39 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Ах да, поскольку мышей не отучишь жрать кактус, то можно ишо профайлер запустить. И узрить воотчую разницу между "прекрасно работает если его запустить вручную" и "Если я его помещаю в джобу, то получаю ошибку". Экономия кактуса может быть изрядной. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 14:07 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Гулин Федор Владислав Колосов Roust_m, пропущено... Дело не в размере, это запрос никуда ничего не записывает. ну логично тогда попробовать элементарный апдейт-Insert в тестовую таблицу и глянуть прокатит или нет чтобы локализовать проблему. Уже прокатило: Код: powershell 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 16:05 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
aleks222 Гулин Федор пропущено... ну логично тогда попробовать элементарный апдейт-Insert в тестовую таблицу и глянуть прокатит или нет чтобы локализовать проблему. Гораздо логичнее - перестать жрать кактус. Если у тредстартера фсе это безобразие творится на ОДНОМ сервере, то нахера ваще Write-SqlTableData? В том-то и дело, что не на одном: (Invoke-Sqlcmd -query $Query -ServerInstance $SrvSource -database master -OutputAs DataTables) | Write-SqlTableData -ServerInstance $SrvDestination -Database mydb -SchemaName dbo -TableName mytable -Force ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 16:06 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Roust_m, авторПосле этого все начало работать и в джобе. Здесь еще интереснее - зачем Вы выполняете в джобе PS скрипт? Я бы еще понял, если это был бы планировщик windows. Что мешает использовать Integration Services, например? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.07.2020, 18:54 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Владислав Колосов Roust_m, авторПосле этого все начало работать и в джобе. Здесь еще интереснее - зачем Вы выполняете в джобе PS скрипт? Я бы еще понял, если это был бы планировщик windows. Что мешает использовать Integration Services, например? Всяческие ограничения, принятые прежде решения, безопасность и т.д. Идти обратно к начальству, просить пересмотреть дизайн из-за того, что одна команда не работает? Я попробую планировщик Windows, но хотелось бы иметь возможность использовать сиквел джобы, ибо они как-то привычней и более знакомы. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 03:05 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Попробовал планировщик Windows, вылезает ошибка: --------------------------- Task Scheduler --------------------------- An error has occurred for task MyDB Refresh. Error message: The following error was reported: 2147944309. --------------------------- OK --------------------------- Вот по этой причине и хотелось бы иметь возможность использовать джобы сиквела, ибо они очень знакомы. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 03:22 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Фиксанул эту ошибку и запустил задачу. Тот же шаг не отрабатывает и в планировщике Windows. История задач планировщика ужасная, сплошная абра-кадабра, понять почему шаг падает непросто. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 03:46 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Roust_m, что хотите делать вашим скриптом? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 11:55 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Roust_m aleks222 пропущено... Гораздо логичнее - перестать жрать кактус. Если у тредстартера фсе это безобразие творится на ОДНОМ сервере, то нахера ваще Write-SqlTableData? В том-то и дело, что не на одном: (Invoke-Sqlcmd -query $Query -ServerInstance $SrvSource -database master -OutputAs DataTables) | Write-SqlTableData -ServerInstance $SrvDestination -Database mydb -SchemaName dbo -TableName mytable -Force Мыши кололись, плакали, но продолжали жрать кактус... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.07.2020, 14:30 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Критик Roust_m, что хотите делать вашим скриптом? Мне нужно на базе истории бекапов на одном сервере построить команды восстановления этих бекапов на другом сервере. Linked Servers к источникам я создавать не могу, поэтому приходится использовать PowerShell. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 10:23 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Я еще обнаружил, что если выполнить из командной строки: Код: powershell 1.
То тоже выдает сообщение что подключиться не может. Я даже таймаут пытался увеличить до 10 минут, все равно висит 10 минут и отваливается. Также заметил, что если передать неправильный параметр сервера источника, вместо него указать сервер, где нет истории бекапов нужных баз, то все отрабатывает, видимо потому, что запрос ничего не возвращает. Видимо это зависит от размера возвращаемых данных. Похоже Write-SqlTableData не очень хорошо работает с бОльшими по размеру данными (сотни записей). ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 10:31 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
aleks222 Roust_m пропущено... В том-то и дело, что не на одном: (Invoke-Sqlcmd -query $Query -ServerInstance $SrvSource -database master -OutputAs DataTables) | Write-SqlTableData -ServerInstance $SrvDestination -Database mydb -SchemaName dbo -TableName mytable -Force Мыши кололись, плакали, но продолжали жрать кактус... Есть предложения как добиться нужного результата? Учитывай пжлста, что эта среда, где гайки затянуты очень туго. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 10:32 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Roust_m, Больше брутальности. Выгрузить в файл и прямым Invoke-Sqlcmd insert values пачками по 1000 строк. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 10:59 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Roust_m aleks222 пропущено... Мыши кололись, плакали, но продолжали жрать кактус... Есть предложения как добиться нужного результата? Учитывай пжлста, что эта среда, где гайки затянуты очень туго. Запустить таки профайлер и сэкономить кофейную гущу. Промежду прочим, " Выгрузить в файл" весьма дельное предложение. Если BCP.exe задействовать - еще и быстро будет. Но жертвы ООП должны страдать. Ибо, открыть 2 рекордсета и перекинуть из одного в другой содержимое - это слишком просто. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.07.2020, 11:50 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
aleks222 Roust_m пропущено... Есть предложения как добиться нужного результата? Учитывай пжлста, что эта среда, где гайки затянуты очень туго. Запустить таки профайлер и сэкономить кофейную гущу. Промежду прочим, " Выгрузить в файл" весьма дельное предложение. Если BCP.exe задействовать - еще и быстро будет. Но жертвы ООП должны страдать. Ибо, открыть 2 рекордсета и перекинуть из одного в другой содержимое - это слишком просто. Запускал профайлер, но ничего там не нашел. Может не те события смотрел. Также обнаружил, что запись в таблицу начинается и туда попадают первые пару сотен записей. а потом все отваливается. Причем в пройфайлере очень много попыток вставить в таблицу. Иногда, когда все отрабатывает за менее чем 20 секунд джоба успешна. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2020, 07:16 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Roust_m Причем в пройфайлере очень много попыток вставить в таблицу. Иногда, когда все отрабатывает за менее чем 20 секунд джоба успешна. 1. Включите регистрацию ошибок. 2. Если ошибок нет => ну дык, где-то в клиенте заколочен таймаут. 3. Повторяю: жертвы ООП обязаны страдать. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2020, 09:05 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
aleks222 Roust_m Причем в пройфайлере очень много попыток вставить в таблицу. Иногда, когда все отрабатывает за менее чем 20 секунд джоба успешна. 1. Включите регистрацию ошибок. 2. Если ошибок нет => ну дык, где-то в клиенте заколочен таймаут. 3. Повторяю: жертвы ООП обязаны страдать. Прошу пардон, а где и как ее включить? Я также обнаружил, что та же проблема случается в стандартном окне PowerShell. А вот в PowerShell ISE все прекрасно работает. Также если из командной строки запустить: Код: powershell 1.
То вылезает та же ошибка. Чем отличается PowerShell ISE oт обычного PowerShell в плане таймаутов? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2020, 09:17 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
aleks222 Roust_m Причем в пройфайлере очень много попыток вставить в таблицу. Иногда, когда все отрабатывает за менее чем 20 секунд джоба успешна. 1. Включите регистрацию ошибок. 2. Если ошибок нет => ну дык, где-то в клиенте заколочен таймаут. 3. Повторяю: жертвы ООП обязаны страдать. Не надо никому страдать! Проблема решена! Я заменил формат данных и все заработало. Было: (Invoke-Sqlcmd -query $Query ` -ServerInstance $SrvSource -database master -ConnectionTimeout 600 -OutputAs DataTable ) | Write-SqlTableData -ServerInstance $SrvDestination -Database MyDB -SchemaName dbo -TableName MyTable -ConnectionTimeout 120 -Timeout 120 -Force Стало: (Invoke-Sqlcmd -query $Query ` -ServerInstance $SrvSource -database master -ConnectionTimeout 600 -OutputAs DataSet ) | Write-SqlTableData -ServerInstance $SrvDestination -Database MyDB -SchemaName dbo -TableName MyTable -ConnectionTimeout 120 -Timeout 120 -Force ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2020, 10:06 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Roust_m Прошу пардон, а где и как ее включить? Вестимо в профайлере. Roust_m Не надо никому страдать! Проблема решена! Танец с бубном нельзя считать "решением проблемы". Увы. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2020, 10:22 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Зачем вообще прибегать к PS, когда есть штатное средство Intergtion Services. Делаю, как умею, в общем. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2020, 10:44 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
aleks222 Roust_m Прошу пардон, а где и как ее включить? Вестимо в профайлере. Roust_m Не надо никому страдать! Проблема решена! Танец с бубном нельзя считать "решением проблемы". Увы. Я так понимаю речь идет о включении событий из раздела "Errors and Warnings" в профайлере? Я их включил, но ничего полезного не нашел. Может и нельзя, но время испольнения скрипта сократилось до 2-3-х секунд, а раньше занимало 20-60. Что тоже полезно. Я поищу еще, но для моей задачи такое решение вполне походит. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.08.2020, 10:46 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Владислав Колосов Зачем вообще прибегать к PS, когда есть штатное средство Intergtion Services. Делаю, как умею, в общем. Помимо копирования небольшого количества данных между двумя серверами, не тянет эта задача на Integration Services. Плюс надо идти обратно к начальству, менять дизайн, все согласовывать, делать оценку безопасности и т.д. и все из-за одно не работающей команды. В каждой среде есть своя специфика. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 02:43 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Roust_m, пакет - это не что-то грандиозное, это средство выполнения ETL задач. У Вас типовая ETL задача. Источник - получатель. При этом не требуется создавать связанные серверы. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 10:48 |
|
Скрипт перестает работать если его запустить через джобу сиквела
|
|||
---|---|---|---|
#18+
Владислав Колосов, при том что когда-то SSIS был моим осн. тулом в некоторых проектах я бы тоже не юзал его по мелочам в случает топикстратера я бы делал скрпиты через линк-сервера и запускал через SSMS (job) возможно запихнул бы в SP Powershell я тоже юзал - но больше для SSAS дел - там это очень удобно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2020, 12:27 |
|
|
start [/forum/topic.php?all=1&fid=46&tid=1685812]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 159ms |
0 / 0 |