Сбой SSIS при запуске в задании SQL Server - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть пакет служб SSIS, который работает гладко, когда я запускаю его из Visual Studio, но когда я запускаю его через задачу задания SQL Server, он всегда не запускается и выдает эту ошибку:

Сообщение Выполнено от имени пользователя: скрыто \ скрыто .Microsoft (R) SQL Server Execute Package Utility версии 11.0.6020.0 для 64-разрядных продуктов. Copyright (C) Microsoft Corporation.Все права защищены.Начато: 10:23:40 AM Ошибка: 2018-12-17 10: 23: 40.63 Код: 0x00000001 Источник: Отчет об обновлении Описание: Целевая точка вызова вызвала исключение.Ошибка завершения DTExec: выполнение пакета вернуло DTSER_FAILURE (1).Начало: 10:23:40 Окончание: 10:23:40 Прошедшее: 0,594 секунды.Не удалось выполнить пакет.Шаг не удался.

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

Этот пакет служб SSIS содержит скриптовые задачи, которые изменяют файл Excel.Это нормально в моей компании, потому что мы выполняем много задач автоматизации, которые до сих пор работали нормально.

Есть идеи решить эту проблему?

1 Ответ

0 голосов
/ 18 декабря 2018

наконец я нашел ответ,

у меня есть этот скрипт в моей задаче скрипта

Declare Function EndTask Lib "user32.dll" (ByVal hWnd As IntPtr) As Integer
Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
       (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
Declare Function GetWindowThreadProcessId Lib "user32.dll" _
       (ByVal hWnd As IntPtr, ByRef lpdwProcessId As Integer) As Integer
Declare Function SetLastError Lib "kernel32.dll" (ByVal dwErrCode As Integer) As IntPtr
Public Sub EnsureProcessKilled(ByVal MainWindowHandle As IntPtr, ByVal Caption As String)
    SetLastError(0)
    ' for Excel versions <10, this won't be set yet
    If IntPtr.Equals(MainWindowHandle, IntPtr.Zero) Then
        MainWindowHandle = FindWindow(Nothing, Caption)
    End If
    If IntPtr.Equals(MainWindowHandle, IntPtr.Zero) Then
        Exit Sub ' at this point, presume the window has been closed.
    End If
    Dim iRes, iProcID As Integer
    iRes = GetWindowThreadProcessId(MainWindowHandle, iProcID)
    If iProcID = 0 Then ' can’t get Process ID
        If EndTask(MainWindowHandle) <> 0 Then Exit Sub ' success
        Throw New ApplicationException("Failed to close.")
    End If
    Dim proc As System.Diagnostics.Process
    proc = System.Diagnostics.Process.GetProcessById(iProcID)
    proc.CloseMainWindow()
    proc.Refresh()
    If proc.HasExited Then Exit Sub
    proc.Kill()
End Sub

на этом новом сервере у меня нет прав для запуска этогоскрипт для уничтожения процесса, поэтому задание всегда выдает сообщение об ошибке 0x00000001,

Спасибо, ребята, за попытку ответить на эту проблему

...