新しい SQL-Server Express データベースを作成し、定義済みのテーブル生成/設定スクリプトを実行するコードがあります。これは非常に簡単で単純なタスクであり、コードは通常の操作で素晴らしく機能します。私たちのテスト マシンの 1 つで、この作成関数は、DB の作成後、データを入力する前に失速します。エラー メッセージ、デッドロック (UI はまだ応答する)、および CPU 使用率なしで単にハングします。
さらに調査とデバッグを行うと、LoadDatabaseTables() 関数呼び出しの直前の行が実行されていることが判明しましたが、LoadDatabaseTables() 内の最初の行には到達していません。関数を呼び出すことはできますが、プログラムは関数の最初の行でさえ実行に失敗しますか?
問題のコードは C# で書かれています。
...snip...
bool success=false;
try
{
//...code that creates db, working as intended...
}
catch(Exception e)
{
//...error handling...
}
finally
{
//Params is a locally defined struct, containing int, bool, and string members
if(CreateScript(Params)) //generates appropriate script successfully, returns true
{
System.Windows.MessageBox.Show("About to enter load script");
if(LoadDatabaseTables(Params))
{
success=true;
}
}
}
return success;
}
private bool LoadDatabaseTables(DatabaseParams Params)
{
System.Windows.MessageBox.Show("Entered the load script");
bool success = false;
Server server = null;
try
{
//...sql calls...
success = true;
}
catch (Exception ex)
{
//...exception handling...
}
return success;
}
...snip...
最初のメッセージ「ロード スクリプトを入力しようとしています」に到達しますが、「ロード スクリプトを入力しました」は表示されず、残りの関数は実行されず、例外は発生せず、何も返されません。
残念ながら、このマシンには完全なデバッグを実行するために必要なツール/ライセンスがなく、問題はこの 1 台のマシンでのみ発生します。メッセージ ボックスは明らかに通常のバージョンのコードには含まれておらず、問題を診断するために使用されています。コードは、これらのメッセージ ボックスの有無にかかわらず、他のシステムで正常に実行されます。
誰もこの種のエラーに遭遇したことがありますか? どんな助けでも大歓迎です!