2011-01-27 13 views
4

外部アプリケーションがデータベースに来て、SQLサーバーテーブルに行を挿入します。SQL ServerトリガでC#関数を呼び出すことはできますか?

私は自分でWebアプリケーションを持っていますが、私はこの表の各インサートにいくつかの処理サーバー側をします。

私の考えは、テーブルの挿入時にトリガーを作成し、適切な機能を呼び出すことです。

これを行うにはどのような方法が最適ですか?

フレームワーク3.5をLINQ to SQLおよびSQL Server 2005データベースと共に使用します。

:ありがとうございました。 SQL Server CLR統合ではそれが行われません。サポートされている数少ないライブラリが私の要件を満たしていません。

私が記録しなければならないテーブルは、おそらく5分ごとに新しい記録を取るでしょう。 多分私は毎分テーブルで聴いている仕事をすることができます、IDを見て、すべての新しいIDを取る、私のtreatementをしてください。 私のソリューションはあまりにも醜いですか?

+1

このようなことは聞いたことがありません。おそらく、あなたの問題に別の方法でアプローチする必要があります。 –

+0

私はSQLストアプロシージャのすべてでそれを行うことができますが、私はLinqを使用する利点を失います –

+0

あなたはSPでそれを行うことができます私はちょうどそれをお勧めします。 SQL ServerからSQL Serverに戻るためにSQL ServerからC#に移行することは、実際には必要ない場合は、私の意見では複雑すぎます。私はLinqとTSQLの代わりにそれを使用することができる利点に精通していない一方でいます。 –

答えて

6

SQL Server CLR統合を使用します。

http://msdn.microsoft.com/en-us/library/ms254963%28v=VS.80%29.aspx

+2

トリガーからSQL-CLR関数を呼び出すことができない限り、彼が必要とするものではありませんが、正確に必要なものです。 – leppie

+1

@leppie、あなた*トリガからCLRを呼び出すことができます。私は私の答えを言い換えるつもりです。 :) –

+0

確認していただきありがとうございます:) – leppie

1

あなたの機能を実行するために長い時間がかかるとして、または同じデータベースの一部ではないリソースにアクセスしようとしている場合は、(トリガからの関数呼び出しを切り離す検討する必要がありますトリガーを引き起こした元のステートメントが完了するようにします)。

この場合、Service Brokerを参照するか、別のテーブルを使用して関数を呼び出す要求をキューに入れるだけです(SQLエージェントジョブを使用してこれらの要求をデキューして関数を呼び出すこともできます)。