0

freetds を使用する pymssql を使用して SQL Server に接続する開発者がいます。彼のスクリプトは、MySQL DB の値に基づいて SQL 挿入クエリを動的に生成します。

ステートメントは適切に解析され、SQL プロファイラーで表示すると、適切な開始トランザクション/コミットが含まれています。SQLでUSEを発行するたびに表示される「変更されたデータベースコンテキストを...」にする唯一の「ユーザーエラーメッセージ」。バッチが完了すると、トランザクション ログ イベント「ロールバック」が発生し、挿入されたすべてのレコードが削除されます。

XACT_ABORT_OFF を使用していないのは、'change db context to' が影響を受けるのを見たことがないからです。

誰かがこれについて何か考えや経験を持っていますか? ありがとう!

[編集]: プロファイラーからコピーされたコードは、同じユーザーを使用して SSMS で正常に動作し、トリガーはありません。

[2 回目の編集]: SQL プロファイラ内で、eventsubtype の下に「rollback」を含む「TransactionLog」エントリが表示されますが、TM:Rollback Tran はありません。

4

2 に答える 2

2

接続が正しくコミットまたはクローズされていない可能性があります。freetds のドキュメントを調べて、正しい使用パターンを使用していることを確認してください。また、接続で自動コミット モードを有効にできるかどうかを確認することもできます。

于 2012-09-12T20:12:28.530 に答える
0

そのため、自動コミット設定を何度も検索してトリプルチェックした後、2 つの変数の名前が非常に似ていて、間違った変数をコミットしていることに気付きました。mysql と pymysql モジュールがありますが、この場合は pymssql を使用していましたが、代わりに pymysql で入力されました。コメントしてくれたみんなありがとう。

于 2012-09-12T23:01:00.657 に答える