1

新しい 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 台のマシンでのみ発生します。メッセージ ボックスは明らかに通常のバージョンのコードには含まれておらず、問題を診断するために使用されています。コードは、これらのメッセージ ボックスの有無にかかわらず、他のシステムで正常に実行されます。

誰もこの種のエラーに遭遇したことがありますか? どんな助けでも大歓迎です!

4

0 に答える 0