2012-01-04 5 views
3

SQLCMD. PowerShell 스크립트는 $ LASTEXITCODE를 확인합니다. $ LASTEXITCODE가 0이 아니면 "스크립트가 실패했습니다. 반환 코드는 $ LASTEXITCODE입니다."

스크립트는 다른 SQL 스크립트를 실행하기 위해 여러 번 사용 및 배포에 실행 파워 쉘 스크립트의 체인의 일부입니다.

스크립트는 대부분의 시간을 잘 실행하지만 무작위로 -1073741502의 리턴 코드로 실패합니다.

이것은 SQL2008로 업그레이드 한 후에 만 ​​발생했으며 수동으로 단일 powershell 스크립트 나 sql cmd 스크립트를 수동으로 실행하여 재현 할 수 없습니다.

는 PowerShell 명령이다

& 'sqlcmd.exe를'-S $ databaseServer -r -b -E -I '$ scriptFullPath'

경우 ($ LASTEXITCODE -ne 0) { 던져 "스크립트가 실패했습니다. 코드는 $ LASTEXITCODE이다 돌려줍니다." }

겉으로보기에는 무작위적인 실패의 본질은 많은 고통을 초래합니다. 오류가 SQL2008, SQLCMD (osql.exe와 동일한 동작을 나타내지 만) 또는 어쨌든 powershell에 연결되었는지는 확인할 수 없습니다. SQL 스크립트는 잠시 동안 확인을 실행하고 실패 이후

나타납니다 실행 SQLCMD 실제 SQL 문제는 무관합니다.

같은 실패

는 다양한 워크 스테이션 및 서버 (Win7에, WIN2003 및 Win2008)

이 아래로 많이 주시면 감사하겠습니다 추적하는 방법에 대한 지침에 볼 수있다. 당신이 PowerShell을 사용하는 경우

+1

알려진 문제 일 수 있습니다. [connect : connect.microsoft.com] (http://connect.microsoft.com/PowerShell/feedback/details/496326)/안정성 문제 - 모든 응용 프로그램 실행 - lastexitcode-1073741502 # 세부 정보) –

+0

@ user978511 - 응용 프로그램과 관련이 없습니다. 존의 링크에 유의하십시오. – JNK

+0

@jon Z. 링크를 제공해 주셔서 감사합니다. 찾았습니다. 다행이 광기에 나는 혼자가 아닙니다. –

답변

1

sqlcmd 및 명령 줄을 사용하지 마십시오!

V2에는 SQL Server와 더 강력한 상호 작용을 제공하는 매우 유용한 기본 제공 도구가 있으며 오류를 확인하기 위해 반환 코드 텍스트를 구문 분석하지 않아도됩니다. 실제로 오류가 반환됩니다 코드.

Here's a technet article on Invoke-SQLCmd

베어 마음에 먼저 스냅인 (snapin)를로드해야합니다

Add-PSSnapin SqlServerProviderSnapin100 
Add-PSSnapin SqlServerCmdletSnapin100 
+0

대개는 그렇지 않은 동일한 상자에 SQL Server가 설치된 경우에만 작동합니다. –

+0

사실이 아닙니다. SSMS가 설치되어 있지만 전체 서버는 설치되어 있지 않아야합니다. 필자는 원격 서버에 연결하는 개발 컴퓨터에서 매일이 작업을 사용합니다. thanks @ JNK. – JNK

+0

감사합니다. Invoke-SQLCMD –

0

근본 원인이 실제로

종료 코드 -1073741502 16 진수의 0xC0000142입니다 elsewhere on here을 설명 (STATUS_DLL_INIT_FAILED). 마이크로 소프트의 KB2701373 주소 새는 핸들 Microsoft.powershell.consolehost.dllConsole.Write로했다.

사이드 노트 : 인터넷에있는 일부 "수정 사항"은 다르게 작업 한 다음 PowerShell을 다시 시작하는 것과 관련이 있습니다. 그러나 PowerShell을 실제로 다시 시작하면 문제가 일시적으로 해결됩니다.