0

ここに投稿するのが適切でない場合は申し訳ありませんが、SQL 2005 インスタンスで実行されている Web AP で非常に奇妙なことが発生しています。

アプリケーションは .net Web アプリであり、1 日を通して多くのクエリが予想されるとおりに実行されます。

しかし、断続的に例外メッセージなどのエラーが発生します: *DataBinding: 'System.Data.DataRowView' には 'column_name'* という名前のプロパティが含まれていません クエリに明らかにその列がある場合-手動で実行すると正常に動作します..これは、SQLインスタンスがメモリ不足であるか、一般的に不十分であるという症状ですか?

もちろん、コードの問題を追跡することはできません!

残念ながら、Web アプリと SQL インスタンスの両方が、4 GB の RAM を搭載した Xeon である同じボックス上にあるため、決して強力ではありません..

ps。失敗するように見える上記のようなクエリだけでなく、いくつかの linq-to-sql のこともあります。実際には、DB がまったく好きではない段階を経ています。ヘルプ/提案は喜んで受け取られます。

ありがとう

ナット

いくつかのコード..以下に問題があることはわかりません..しかし、上記の例外は基本的に、列aまたはbまたはcが見つからないと言っています...

Dim conn As New SqlConnection(sitedb)
    Dim cmd As New SqlCommand
    cmd.CommandText = "SELECT a,b,c FROM Table"
    Dim da As New SqlDataAdapter(cmd)
    Dim dt As New DataTable

    Try
        conn.Open()

        da.Fill(dt)

    Catch ex As Exception
        Throw ex
    Finally
        conn.Close()
    End Try

    if dt.Rows.Count > 0 then
       Grid.DataSource = dt **<- dies here....**
       Grid.DataBind()
    end if

明らかに機能するクエリから行を返し、取得したばかりの列に indexoutofrange をスローするにはどうすればよいですか? 私が思う本当の問題は、私たちが経験している問題のどれもコードに関連していないということです..データベースはぐらつきを投げているようで、意味をなさないような多くの奇妙な例外が発生します. これは、ボックスのパワーが不足しているかのように、リソースに関連している可能性がありますか..?

4

1 に答える 1

2

Conn.Close を発行しているので、レコードセットが切断されていると思います。ただし、db ライブラリのカーソル位置によって、行が実行時またはフェッチ時にプルされるかどうかが決まります。これは、db-session-level または connection-level 設定にすることができます。

暗黙的にサーバー側ページング モードになっているために、接続プールまたはその他の並列動作によってレコードセットがフェッチされない可能性はありますか?

データセットを使用している間は接続を開いたままにしてみてください。それで問題が解決する場合は、このツリーを吠え続けてください。

于 2012-07-20T08:29:11.180 に答える