2017-02-03 1 views
0

저장된 SQL 쿼리 파일을 호출하고 특정 서버 & 데이터베이스에서 실행하는 Powershell 스크립트가 있습니다. 그 부분은 잘 작동하고 있는데 문제는 로그 파일에 생성되는 SQL 메시지를 저장하고 싶다는 것입니다 (그림 참조). Powershell - 파일로 SQL 메시지 출력

SQL Output from after Query is run

내 현재 코드로 작동하지 않는, 그리고 그것이 이후 기술적으로 출력을 조회하지 대신하지 데이터를 가져 오는 테이블을 다시 색인과 업데이트하기 때문에 그건 생각합니다.

{  
Import-Module SQLPS   
$Data = Invoke-Sqlcmd -InputFile $SQLQuery -ServerInstance $Server -Database $Database -QueryTimeout 0  
$Data | out-file "$Output$Database$date.txt"  
} 

하지만 그건 그냥 빈 텍스트 파일을 생성합니다 :

나의 현재 관련 코드입니다. PowerShell을 통해 다른 파일에 저장된 인덱스를 다시 작성하고 업데이트하는 방법에 대한 정보를 얻으려고합니다. 메시지 창에서 마우스 오른쪽 버튼을 클릭하고 "다른 이름으로 결과 저장 ..."을 클릭하면 SSMS를 통해이 작업을 수행 할 수 있지만 예약 된 작업으로 실행 중이며 아무도 SSMS에 있지 않으므로이를 자동화에 포함하려고합니다.

파워 쉘의 V3/윈도우 서버 2012/SQL SSMS 2014

어떤 도움을 주시면 감사하겠습니다! 이상한 서식으로 미안하다.

+0

'verbose' 매개 변수는 필요한 작업을 수행합니까? –

답변

1

는 아래의 링크를 정확하게이 문제에 대해 설명 같습니다 : 기본적으로

https://sqlnotesfromtheunderground.wordpress.com/2015/09/09/powershell-outputting-a-sql-server-query-result-from-the-message-tab/

, 쿼리의 결과가 아닌 무엇을 당신은 '메시지'탭에서보고있는이 아니라 단지 PRINT 문 (기본적으로 Write-Host 또는 Console.WriteLine과 동일). Invoke-SqlCommand2를 사용하는 경우 -Verbose 옵션은 이러한 PRINT 문을 Verbose PowerShell 스트림으로 캡처합니다. 이 스트림을 텍스트 파일에 기록하려면 다음과 같이 특정 스트림을 지정해야합니다 (이 경우 4).

Invoke-Sqlcmd2 -ServerInstance . -Database master -Query "PRINT 'Export This result'" -Verbose 4> Out-File C:\Temp\Test.txt 
+0

여기에 약간의 초보자 순간이 있습니다. 정기적 인 {Invoke-Sqlcmd -ServerInstance $ ProdServer -Database $ Database -Query "PRINT '결과 내보내기" "-Verbose 4"Out-File "C : \ users \ admin-ag \ desktop \ Test.txt" } "out-file : 현재 공급자 (Microsoft.SqlServer.Management.PSProvider \ SqlServer)가 파일을 열 수 없으므로 파일을 열 수 없습니다."오류가 발생합니다. – AJPG

+0

또한 Invoke-SQLCMD2를 사용하는 방법을 모르면이 오류를 표시합니다. "Invoke-Sqlcmd2 : 'Invoke-Sqlcmd2'라는 용어가 cmdlet, 함수, 스크립트 파일 또는 작동 가능 프로그램의 이름으로 인식되지 않습니다." – AJPG

+0

Ah - SQLPS 모듈을 사용할 수 없기 때문에 Invoke-SqlCmd2 cmdlet의 출처를 알 수 없습니다. GitHub의 커뮤니티 기능인 것처럼 보입니다. https://github.com/sqlcollaborative/Invoke-SqlCmd2 왜 제공자 오류가 발생하는지 잘 모르겠습니다. 나는 "cd c : \"명령을 실행하기 전에 SQL 공급자 컨텍스트에 있지 않은지 확인하려고합니다. – jbsmith