0
データベースに接続してクエリを実行するユーザー定義関数があります。複数のデータベースで実行するためにループで呼び出されます。データベースサーバーによってエラーが報告された場合、スクリプトはコンソールでエラーを報告します。&は、終了することなく予想されます。しかし、そのエラーを変数&に保存するか、ファイルに書き込むか、データベースに保存してください。 (...その完全ではない)ユーザ定義関数を呼び出すときにpowershellで終了しないエラーをキャッチできません
function sqlCon($db, $sqlcmd)
{
$connString = "Server='server_name';Database='$db';Integrated Security=sspi"
$sqlConnect = New-Object System.Data.SqlClient.SqlConnection $connString
$sqlConnect.Open()
$sqlCommand = $sqlConnect.CreateCommand()
$sqlCommand.CommandText = $sqlcmd
$sqlCommand.ExecuteNonQuery() | Out-Null
$sqlConnect.Close()
}
}
foreach($db in $databases){
try{
$sqlcmd = " use $($db);
<<some sql query which updates or deletes>>"
sqlCon $db $sqlcmd
#here i'm trying to catch non terminating errors but below statment never satisfies even
#i have errors while calling above function. Not sure if i'm missing anything here...
if(-not($?)){
throw "an error occured while executing query on $($db)."
}
}
catch{
write-host "use this info to log into file or database."
}
}
注:
は、以下のサンプルコードである私は、PowerShellのV2が、V3も私の作品PowerShellのいずれかのオプションを使用しています。
完璧な実用的なソリューションを...ありがとう:) – sqlcheckpoint