まあ、はい、いいえ。それは、あなたが "関数を呼び出す"ことが何を意味するかによります。
T-SQLからメソッドを直接呼び出す場合は、すべての公開メソッドにT-SQLラッパーオブジェクトが必要です(T-SQLとCLRの間のブリッジとして機能する)。この質問の解釈は、@ Mithrandirの答えでなされた。
ただし、アセンブリ内のプライベート/内部メソッドについて言及している場合は、T-SQLラッパーオブジェクトは必要ありません。
私の最初の考えは次のとおりです: "素晴らしい、今は主ストアドプロシージャを読み込むために25のストアドプロシージャと関数を追加する必要はありません。私はそれで必要なすべてを」。
このステートメントは、公開されたメソッドによって呼び出される内部メソッドをいくつも持つことで、メインプロシージャを乱雑に呼び起こさないようにすることを意味します。同じデータベース内
- 、及び
- :公開されたメソッド(T-SQLラッパー・オブジェクトと、すなわちもの)があれば、それらの他のアセンブリであるように、ユーティリティメソッドを共有することができ、さらには他のアセンブリを参照することができます同じ認可ユーザー
これらのユーティリティメソッドは、まだコンテキスト接続を使用してデータアクセスを行うことができます持って、彼らはT-SQLに公開されるメソッドから呼び出されていることを提供する(すなわちSqlFunction
、SqlProcedure
などの属性を持っており、対応するT-SQLラッパーオブジェクト)。
公開されたメソッドを持たず、他のアセンブリで参照されるコードのみを含むアセンブリを作成することもできます。この場合、ALTER ASSEMBLYを使用して、VISIBILITY
プロパティをに設定することができます(CREATE ASSEMBLY
で行うことはできません)。 VISIBILITY
が別のアセンブリを参照しているアセンブリでOFF
に設定されている場合、外部キーによるカスケード削除と同様に、非表示のアセンブリは自動的に削除されます。
私はこれが数年前であることを知っていますが、私の答えであなたの質問を正しく解釈すれば私は不思議です。 –