1

データベースで発生したすべてのエラーをキャッチして、ユーザー定義のテーブルに記録できるかどうかを知りたいです。

理由:

私がそうである理由は、Sql2005バックエンドとしてWebアプリを実行しているためです。を使用してWebアプリを開発してLinq2Sqlいます。2008R2展開された場所で開発されSql2005ましたShared Hosting environment

datetime datatype2008年に使用したように、継続的にエラーが発生していdate datatypeます。

したがって、私が望むのは、データベース内の任意の場所で発生した同様の例外を内部的にキャッチし、フィールドを含むカスタム テーブルに記録することです。

要件

  1. 例外がスローされたテーブル名
  2. 手順の名前、将来使用する場合に備えて
  3. 例外メッセージ
  4. 発生日時

ご注意ください

テーブルごとの例外処理手順を書きたくありません。ASP.Net 、 Global.asax でエラーを処理するのと同じように、すべての例外を取得する一般的な方法が必要です。

私が得ている例外

The version of SQL Server in use does not support datatype 'date'.

上記の例外に基づいて、どのテーブルがこの例外をスローしているのかわかりません。そのため、ストアド プロシージャで詳細をキャッチし、カスタム テーブルに保存する必要があります。

4

1 に答える 1

1

これらのエラーは、SQL サーバー内部のものではありません。それをあなたに与えているのはおそらくSQLではなく、むしろdbドライバーです。

ストアド プロシージャを使用している場合、SQL サーバーは、サポートされていないデータ型の使用法でこれらの s'procs を作成することさえできませんでした。

LINQ を使用していることを考えると、私の推測では、LINQ 自体が問題を投げかけているので、データベース呼び出しの周りで通常の例外処理を使用してそれを見つける必要があります。

もちろん、より良い方法は、モデルを再生成するか、コード分析を行って、無効なデータ型へのすべての参照を見つけることです。または、さらに良いのは、SQL サーバーのバージョンがある程度最新のホストに切り替えることです。それ以来、多くのセキュリティとパフォーマンスの改善が行われてきました。

于 2013-03-07T14:31:54.897 に答える