私はこの問題を解決する方法が不明で、問題を抱えており、このタスクを達成するために何が最善のアプローチであるかを知りたいと思っています。私たちは、アプリケーションの研究開発をしているトランザクションのコード内
VB.net 2.0とSQL 2005ユーザーがかもしれないが、多く受け取った商品が含まれているの購入に基づいて受信をキャンセルさせています。しかし、取り消しの過程で、「良い#1をキャンセルしますか?」などの質問がユーザーに表示されます。はいの場合は削除します。次に、「良い#2をキャンセルしますか?」、いいえ、削除しないでください(受信したアイテムが発行されている場合は、ユーザーが手動でプロセスを作成する必要があります)。そして最後に、すべての商品がであった場合、がキャンセルされた場合は、受け取りをキャンセルする必要があります。しかし、エラーが発生したり、このプロセスでユーザーに要求された状態が発生した場合は、最初から行われた操作をキャンセルして元の状態に戻したいと考えています。だから、私はTransaction
と思った。
私は使用することができますTransaction for SQLがある知っていると私はそれを使用する方法を十分知っているが、私は本当にユーザーとしてこれを使用することはできませんが、おそらくこの取引をキャンセルしたアクションを実行する必要があります。
私はまた、.NET 2.XからTransactionScopeを覚えていて、これと似たようなことを達成することができます。また、それを使用する方法もよく知っています。この問題はTransactionScopeとMSDTCで発生します。分散トランザクションマネージャ(MSDTC)のための
ネットワークアクセスが無効になっている。これを使用している場合、我々はまだ言ったエラーを取得します。コンポーネントサービスの管理ツールを使用して、MSDTCのセキュリティ構成でネットワークアクセス用のDTCを有効にしてください。
ここに記載されているものを試してみたところ、in another stack postは、ユーザーがコンピュータを再起動するまでうまくいきます。ユーザーは毎回コンピュータを再起動し、価値を取り戻す必要があります。加えて、デフォルトでは、この値がOnに設定されているコンピュータはありません。少なくとも10台のコンピュータベースでは、いずれも有効化されていません。このプログラムがインストールされている300台のコンピュータのようなものがありますので、どちらも考慮しないと良いことはありません。
だから私はこれをどのように達成できるか考えている人は誰ですか?私が使用できるコードを介してトランザクションを行っているものはありますか?
NOTE1:私はいくつかのことが言えるでしょう、まずユーザーに条件を尋ね、メモリ内の値を維持します。完了したら、すべてがうまくいったら、削除してください。しかし、削除するときにエラーが発生した場合、商品#4としましょうか?そして、削除する商品の動的リストをストア・プロシージャにどのように与えることができますか?
注2:私の英語は申し訳ありませんが、私はいつもフランス語を話します。
注記3:私はVBとC#の両方を知っているので、C#のすべてのサンプルも提供できます。すでにキャンセルを管理するために、類似したストアドプロシージャを持っていると仮定すると
をC#で、それは次のようになります。エラーが発生した場合バッチ内の自動ロールバックの詳細については、[SET XACT_ABORT ON](http://msdn.microsoft.com/en-us/library/ms188792%28v=sql.90%29.aspx)を参照してください。 –
うん、しかし、私はまだ#1、3、4、5、8のGood#1をGoodから取り消すことができるという問題があります。動的配列をストアドプロシージャに渡すにはどうすればよいですか?方法はありますか? –
SQL ServerにXMLデータ型があるので、XMLパラメータとしてあらゆる種類のものを渡す可能性があります。しかし、私はあなたがユーザーのアクションとこのバッチのExecuteNonQueryに応答してSQLステートメントを自分で作成できると考えていました。 –