2017-10-24 9 views
0

데이터베이스에서 데이터를 가져 와서 csv 파일에 저장하는 PowerShell 스크립트를 실행하는 SQL Server 에이전트 작업이 있습니다.SQL Server 에이전트에서 PowerShell 스크립트를 실행하는 중 작동하지 않습니다.

작업 유형은 PowerShell로 설정하고 명령은 다음과 같습니다 :이 작업을 실행하면

[email protected]'exec my_stored_procedure'@ 
$result = Invoke-Sqlcmd -ServerInstance INSTANCE_NAME -Database DBNAME -Query $sql 
#The first row gets removed and then save it to a csv file 
$result | ConvertTo-Csv -NoTypeInformation | Select-Object -Skip 1 | Set-Content \\SERVER\c$\Folder\file.csv 

이 성공적으로 실행되지만 file.csv는 지정된 위치에 만들어지지 않습니다.

나는 작업 기록을 확인하고는 말한다 :

작업 스크립트는 다음과 같은 오류가 발생했습니다. 이 오류는 스크립트를 중지하지 않았습니다. (.....) 해당 줄은 $result | ConvertTo-Csv -NoTypeInformation | Select-Object -Skip 1 | Set-Content \\SERVER\c$\Folder\file.csv입니다. 스크립트를 수정하고 작업을 다시 예약하십시오. PowerShell에 의해 반환 된 오류 정보는 'Cannot use interface. The IContentCmdletProvider interface is not implemented by this provider.'입니다. 프로세스 종료 코드 0

내가 누락 된 부분을 이해하는 데 도움을 줄 수 있습니까? 이것은 내 첫 번째 PowerShell 프로젝트이므로 다른 사람들에게 명백한 것들을 놓친 것 같습니다.?

+0

당신이 SQL로 연결 PowerShell을 실행하는 SQL을 사용하는 어떤 특별한 이유? 그곳에서 프로 시저를 실행하고 내보내는 것이 어떨까요? 아마도 당신의 필요에 따라 SSIS를 사용하십시오. – Matt

+0

@Matt PS 스크립트 전에 실행해야하는 다른 작업이 있으므로 SQL Server 에이전트 작업 단계의 일부로 PS를 실행할 수 있기를 바랬습니다. – kabichan

+0

PowerShell의 'Export-Csv' cmdlet을 사용해 보시지 않겠습니까? '$ 결과 | Export-Csv -path \\ SERVER \ c $ \ Folder \ file.csv -NoTypeInformation' –

답변

0

경로의 서버 이름 때문에 불평을하는 것으로 보입니다.

나는 원래했다 :

ConvertTo-Csv -NoTypeInformation | 
    Select-Object -Skip 1 | 
    Set-Content \\SERVER\c$\Folder\file.csv 

하지만 CDing 파일 디렉토리 및 지정이 속임수를 썼는지 :

$directoryPath = "C:\Folder" 
cd $directoryPath 
ConvertTo-Csv -NoTypeInformation | 
    Select-Object -Skip 1 | 
    Set-Content C:\Folder\file.csv 
+0

이것이 해결책 인 것 같습니다. [link] (https://mattypennysite.wordpress.com/2015/11/19/powershell- operation-report-wrongprovidertype-is-invalid /)를 수행 할 수 없습니다. 근본적인 원인이 무엇인지 확실하지 않지만 어떻게 든 그 트릭을 수행합니다. –