2012-12-13 7 views
6

2つの異なるSQL Serverテーブルにレコードを作成する私の.netアプリケーションでアクションがあります。ここでベストプラクティスは何ですか?2コールまたはSQLサーバーへの単一コール

1つのストアドプロシージャで両方のレコードを作成する必要がありますか? OR 異なるストアドプロシージャで、該当するデータベースの各レコードを作成し、両方の呼び出しをトランザクションにラップする必要があります。

どちらが優れていますか?

+12

おそらくトランとにかく授権。これは、ほとんど時期尚早の最適化です。それはよりきれいなやり方です。本当に好奇心が強い場合は、両方の方法を使用してプロファイラを実行し、運用環境で実際のパフォーマンス統計を取得します。 –

答えて

1

ストアされたprocは、よりパフォーマンスが高いでしょう。また、サーバー側のコードを書く必要も少なくなります。欠点は、自分でSQLを書く方法を知っている必要があるか、あるいは誰があなたのために書くことができるDBAがいるかです。

あなたの他の質問に関しては、両方のテーブルに挿入する1つのストアドプロシージャになります。

もうひとつ考慮すべきこと:コード全体でこのようにたくさんのことを行う必要がある場合は、良いORMを学び、コード(オプション2)でこれを行う価値があるかもしれません。しかし、これがあなたがたった一箇所でしかやり遂げない一種のものであれば、ストアドプロシージャはよりスマートなアプローチになります。

0

ロジックをSQL Serverに格納し、トランザクションスコープを定義し、このアクションが.NETアプリケーションでトリガされたときに、ストアドプロシージャで操作を実行し、この2つのアクションが正常に終了した場合このトランザクションはロールバックされます。 この方法でパフォーマンスが向上します。下記に記載されているとして、Microsoftのドキュメントに従って、ストアドプロシージャを使用して、いくつかの利点があります。

  • 実行計画の保持との
  • クエリの自動パラメータ
  • ビジネスルールのカプセル化と政策
  • アプリケーションモジュール化を再利用
  • 共有アプリケーション間のアプリケーションロジック
  • 安全で均一なデータベースオブジェクトへのアクセス
  • 一致して、安全にデータをシステムで自動実行のための
  • ネットワーク帯域幅の節約
  • サポート変形例起動
  • 強化されたハードウェアとソフトウェアの機能
  • セキュリティの向上
  • 削減、開発コストと信頼性の向上
  • 一元化セキュリティ、管理、および一般的なルーチンのメンテナンス