0

SQL Server でテーブルの行を更新するたびに、更新が正常に実行され、確認すると、行が更新されたことが示されます。ただし、翌日確認すると、行った更新がロールバックされていることがわかりました。開いているトランザクションがあるかどうかも確認しましたが、何もありません。トランザクションで更新ステートメントを実行しないため、後でトランザクションをコミットする必要はありません。これはしばらくの間起こっていて、本当にイライラしています。

どんな助けでも大歓迎です。

4

1 に答える 1

0

使用しているサーバーまたはデータ アクセス メカニズム (ADO.NET など) が、トランザクションを自動コミットするように構成されていない可能性があります。この MSDN サイトには次のように記載されています。

自動コミット モードは、SQL Server データベース エンジンの既定のトランザクション管理モードです。すべての Transact-SQL ステートメントは、完了するとコミットまたはロールバックされます。ステートメントが正常に完了すると、コミットされます。エラーが発生すると、ロールバックされます。データベース エンジン のインスタンスへの接続は、この既定のモードが明示的または暗黙的なトランザクションによってオーバーライドされていない場合は常に、自動コミット モードで動作します。自動コミット モードは、ADO、OLE DB、ODBC、および DB-Library のデフォルト モードでもあります。

UPDATE を明示的にトランザクションに入れてコミットし、それが保存されるかどうかを確認してください。また、デフォルトのトランザクション管理モードを変更して autocommit を false に設定する設定が SQL Server にあるかどうかを DBA に確認してください。

于 2012-12-12T08:54:18.373 に答える