У меня есть сценарий PowerShell (скопированный из Net), который будет выполняться с помощью SQL Задания агента сервера. Этот скрипт прочитает файл Excel и создаст из него файл CSV.
У меня не установлен Excel на машине, на которой выполняется этот скрипт, поэтому я использую этот метод.
Код:
$strFileName = "C:\xxxx\yyyy.xlsx"
$strSheetName = 'MasterCalendar$'
$strProvider = "Provider=Microsoft.ACE.OLEDB.12.0"
$strDataSource = "Data Source = $strFileName"
$strExtend = "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1';"
$strQuery = "Select [Machine_ID],[1469] from [$strSheetName]"
$objConn = New-Object System.Data.OleDb.OleDbConnection("$strProvider;$strDataSource;$strExtend")
$sqlCommand = New-Object System.Data.OleDb.OleDbCommand($strQuery)
$sqlCommand.Connection = $objConn
$objConn.open()
$da = New-Object system.Data.OleDb.OleDbDataAdapter($sqlCommand)
$dt = New-Object system.Data.datatable
[void]$da.fill($dt)
$dataReader.close()
$objConn.close()
$dt
$dt | Export-Csv C:\xxxx\data.csv -NoTypeInformation
При выполнении через SQL серверный агент выдает следующую ошибку:
Сообщение выполняется от имени пользователя: Test \ User1. Шаг задания получил ошибку в строке 17 сценария PowerShell. Соответствующая строка - «$ dataReader.close ()». Исправьте сценарий и перенесите задание. PowerShell возвращает следующую информацию об ошибке: «Вы не можете вызвать метод для выражения с нулевым значением. '. Код выхода из процесса -1. Шаг не удался.
Я новичок в написании сценариев и PowerShell, не могу понять проблему, так как этот точный код работает нормально на моем компьютере, но начинает выдавать ошибку при выполнении через задание агента сервера SQL.