SQL Server 2005 ストアドプロシージャ

SQL Server 2005 には、ストアド・プロシージャとして T-SQL 以外に .NET アセンブリをストアすることが可能になっている、というデモを TechEd 2005 で見たので、早速帰ってから試してみた。
確かにストアドプロシージャやトリガ関数として .NET のコードを埋め込むことができるようになっている。
また、SqlConnection を開くときに、"context connection=true" と指定するだけで、SQL サーバー内で TCP やパイプなどの通信を経由せずに SQL コマンドの発行ができるようになっている。それで開いた SqlConnection に対する操作としては、従来と同じ方法でほとんどの処理ができる。
この仕組みを使って、複雑なビジネス・ロジックを SQL サーバー内に埋め込むことが可能になった という解説があった。


ただし、やはり外から見るとストアドプロシージャなので、引数として渡せるパラメータは int とか varchar とかの SQL でサポートされている型に限定される。オブジェクトを渡すとかいったことはできない。
もし複雑なデータを渡したい場合は、XML か何かにシリアライズして「文字列として」渡す必要があるらしい (とセミナーでは説明していた)。


あと、SQL サーバーに設置するアセンブリが別のアセンブリに依存している場合、依存されているアセンブリも配置しないといけないが、なぜか Visual Studio 2005 はこれを自動で配置してくれないようである (そもそも SQL データベースプロジェクトが別の共有ライブラリプロジェクトに依存する設定ができない。エラーになる)。開発時は頻繁に依存先ライブラリのほうを変更することもあるだろうから、もうちょっと使い勝手が良くなれば良いのだが。他に設定方法があるのだろうか?