sqlcmd.exeを呼び出してリモートSQLサーバーに対してSQLスクリプトを実行するPowerShellスクリプトを作成しました。PowerShellスクリプトは$LASTEXITCODEをチェックします。$ LASTEXITCODEがゼロ以外の場合、「スクリプトが失敗しました。戻りコードは$LASTEXITCODEです。」をスローします。
このスクリプトは、さまざまなSQLスクリプトを実行するために複数回使用され、展開中に実行される一連のPowerShellスクリプトの一部です。
スクリプトはほとんどの場合正常に実行されますが、戻りコード-1073741502でランダムに失敗します。
これはSQL2008にアップグレードした後にのみ発生し始めており、単一のPowerShellスクリプトを手動で実行するかsqlcmdスクリプトを手動で実行しても再現できません。
これはPowerShellコマンドです。
&'sqlcmd.exe' -S $ databaseServer -r -b -E -i'$ scriptFullPath'
if($ LASTEXITCODE -ne 0){throw"スクリプトが失敗しました。戻りコードは$LASTEXITCODEです。" }
一見ランダムな失敗の性質が多くの苦痛を引き起こしています。エラーがSQL2008なのか、SQLCMDなのか(osql.exeでも同じ動作が得られますが)、または何らかの形でPowerShellに結合されているのかどうかを判断できません。
sqlcmdが実行している実際のSQLは、SQLスクリプトがしばらくの間正常に実行されてから失敗するため、問題とは無関係のようです。
同じ障害が多くの異なるワークステーションとサーバー(Win7、Win2003、およびWin2008)で見られました。
これを追跡する方法についてのガイダンスをいただければ幸いです。