Сбой сценария SSIS при запуске из агента SQL
Я удалил и переписал этот вопрос, так как не думаю, что я был ясен, и это вызвало некоторое разочарование.
У меня есть пакет служб SSIS, который создает и заполняет лист Excel, пакет работает отлично и создает файлы по своему желанию и может быть выполнен по расписанию из агента SQL Server без каких-либо проблем.
Проблема возникает, когда я пытаюсь выполнить задачу сценария, которая выполняет некоторый сценарий VB для удаления определенной строки в файле Excel.
Public Sub Main()
'
Dim xlApp As Excel.Application
Dim xlSheet As Excel.Worksheet
xlApp = New Excel.Application
xlApp.Workbooks.Open(Dts.Variables("NewFileName").Value.ToString)
xlSheet = xlApp.Workbooks(1).ActiveSheet
xlSheet.Rows(4).Delete()
xlApp.Workbooks(1).Save()
xlApp.Workbooks(1).Close()
xlSheet = Nothing
'
Dts.TaskResult = ScriptResults.Success
End Sub
Теперь это прекрасно работает в среде BIDS и делает именно то, что мне нужно. Однако после развертывания пакета задание завершается с ошибкой, что приводит к ошибке
Источник: Удалить строку заголовка Описание: System.Reflection.TargetInvocationException: Исключение было сгенерировано целью вызова. ---> System.Runtime.InteropServices.COMException (0x800A03EC): Microsoft Excel не может получить доступ к файлу 'G:\Folder\Folder1\Status File\Status26032015.xls'. Есть несколько возможных причин: Имя файла или путь не существует.? Файл используется другой программой.? Книга, которую вы пытаетесь сохранить, имеет то же имя, что и текущая открытая книга.
Пакет выполняется как ServerName\Administrator, у которого есть доступ к G: (поскольку он не сможет работать при создании файла, поскольку это делается с помощью той же переменной). Однако все статьи, которые я проверил, указывают на разрешения агента SQL Server, так как 90% задания выполняется, включая создание файла на диске G, который, безусловно, должен иметь доступ.
2 ответа
Попробуйте добавить эту папку на сервер, на котором выполняется задание агента SQL; C:\Windows\SysWOW64\ Config\systemprofile\Desktop
Это решило подобную проблему, с которой я столкнулся.
Более подробная информация здесь: https://social.msdn.microsoft.com/forums/sqlserver/en-US/34e5596a-4d02-4499-8a4e-8dad9fa27528/ssis-2008-r2-script-task-fails-when-run-as-job
Процесс агента SQL Server не сможет преобразовать любые подключенные диски, например G:\
,
Я считаю, что это потому, что он не запускает полный сеанс Windows и не загружает профиль пользователя.
Я бы преобразовал ссылки на буквы дисков в формат URI, например \\myserver\fileshare