2009-05-05 38 views
2

サーバーの移行に問題があります。私たちは1つのデータベースサーバー上でうまく動作しているので、多くのトランザクションを 持っているアプリケーションがあります。しかし、同じデータベースを別のサーバーに転送する場合。私たちは次のエラーに直面しています。 Server: Msg 3998, Level 16, State 1, Line 1
バッチの最後にコミット不能なトランザクションが検出されました。トランザクションはロールバックされます

Uncommittable transaction is detected at the end of the batch. The transaction is rolled back.

同じデータベースは、すべてのデータを別のサーバーにコピーされます。接続文字列を古いサーバーに変更すると、正常に動作しています。

誰でもこのことを提案できますか?

+0

どのデータベースのバージョンですか? – JoshBerke

答えて

0

あなたが持っているように見えるのは、レコードが1つのデータベースでは受け入れられるが、他のデータベースでは受け入れられないという問題です。あなたは2つのデータベース構造間の相違点を見てみることをお勧めします(私は彼らが同じであると思われますが、明らかにそうではありません)。疑わしい場合は、照合の差異、データ型の差異、または両者のデータ長の差異があります。また、ID定義が欠落している表があり、必須フィールドで値が欠落しているため挿入できません。 SQl Compareのようなツールは、違いを見つけるのに使いやすいです。

+0

T-SQLに、現在のトランザクションがコミット可能かどうかをチェックする方法はありますか? –

0

このメッセージは、トランザクションの他の参加者の1人がロールバックすることを意味します。その後、トランザクションは失敗する必要があります。

このメッセージは原因ではなく、結果です。以前/その他のエラーメッセージが表示されていますか?

Management Studioからクエリを実行するとどうなりますか?

+0

SQL管理スタジオは、ラッパーのロールバックエラーメッセージではなく正確なエラーを表示します。 –

関連する問題