2つの異なるSQL Serverテーブルにレコードを作成する私の.netアプリケーションでアクションがあります。ここでベストプラクティスは何ですか?2コールまたはSQLサーバーへの単一コール
1つのストアドプロシージャで両方のレコードを作成する必要がありますか? OR 異なるストアドプロシージャで、該当するデータベースの各レコードを作成し、両方の呼び出しをトランザクションにラップする必要があります。
どちらが優れていますか?
2つの異なるSQL Serverテーブルにレコードを作成する私の.netアプリケーションでアクションがあります。ここでベストプラクティスは何ですか?2コールまたはSQLサーバーへの単一コール
1つのストアドプロシージャで両方のレコードを作成する必要がありますか? OR 異なるストアドプロシージャで、該当するデータベースの各レコードを作成し、両方の呼び出しをトランザクションにラップする必要があります。
どちらが優れていますか?
ストアされたprocは、よりパフォーマンスが高いでしょう。また、サーバー側のコードを書く必要も少なくなります。欠点は、自分でSQLを書く方法を知っている必要があるか、あるいは誰があなたのために書くことができるDBAがいるかです。
あなたの他の質問に関しては、両方のテーブルに挿入する1つのストアドプロシージャになります。
もうひとつ考慮すべきこと:コード全体でこのようにたくさんのことを行う必要がある場合は、良いORMを学び、コード(オプション2)でこれを行う価値があるかもしれません。しかし、これがあなたがたった一箇所でしかやり遂げない一種のものであれば、ストアドプロシージャはよりスマートなアプローチになります。
ロジックをSQL Serverに格納し、トランザクションスコープを定義し、このアクションが.NETアプリケーションでトリガされたときに、ストアドプロシージャで操作を実行し、この2つのアクションが正常に終了した場合このトランザクションはロールバックされます。 この方法でパフォーマンスが向上します。下記に記載されているとして、Microsoftのドキュメントに従って、ストアドプロシージャを使用して、いくつかの利点があります。
おそらくトランとにかく授権。これは、ほとんど時期尚早の最適化です。それはよりきれいなやり方です。本当に好奇心が強い場合は、両方の方法を使用してプロファイラを実行し、運用環境で実際のパフォーマンス統計を取得します。 –