2

私はそれがサポートされていないことを知っています。しかし、SQL テーブル値関数内に WCF クライアントが必要です。

(一見) 正しいアセンブリを登録しましたが、クライアントを実行すると、WCF エラーが発生します。

メッセージ 6522、レベル 16、状態 1、行 1
System.ServiceModel.CommunicationObjectFaultedException:
 通信オブジェクト System.ServiceModel.ChannelFactory`1[MyProxy.IMyService]、
 Faulted 状態のため、通信に使用できません。

Sql Server の外部でのテストはうまくいっているようですが、WCF クライアントが TCP 接続を確立しようとしている様子さえ見られません。

私は両方とも初めてなので、これがWCFまたはSQL CLRの問題であるかどうかはわかりません.....

編集:必要な System.ServiceModel とその多数のアセンブリが、精査された Sql CLR リストの外にあることを理解しています。でも、

「サポートされていないライブラリは、マネージ ストアド プロシージャ、トリガー、ユーザー定義関数、ユーザー定義型、およびユーザー定義集計から引き続き呼び出すことができます。サポートされていないライブラリは、最初に CREATE ASSEMBLY ステートメントを使用して SQL Server データベースに登録する必要があります。コードで使用する前に. サポートされていないライブラリが登録され、サーバー上で実行されている場合は、セキュリティと信頼性を確認してテストする必要があります."

4

5 に答える 5

4

この記事は、真の根本的な例外が何であるかを調べ、それがどれほど致命的であるかを確認するのに役立つ場合があります。

http://jdconley.com/blog/archive/2007/08/22/wcfclientwrapper.aspx (archive.org のコピー)

David が正しく言っているように、SQL CLR は .NET アセンブリの限られたサブセットをサポートしています。

SQL 2005 でサポートされる .NET Framework ライブラリ
SQL 2005 CLR 統合プログラミング モデルの制限事項

SQL 2008 でサポートされる .NET Framework ライブラリ
SQL 2008 CLR 統合プログラミング モデルの制限

System.Web.Servicesエンドポイントが WSDL サービスの場合はサポートされているので、穴から抜け出すのに役立つでしょうか? または、通信しようとしている Web サービス以外の WCF エンドポイントへのプロキシとして、常に Web サービスを使用することもできます。

于 2009-01-28T23:27:37.533 に答える
0

System.Runtime.Serializationアセンブリでも同じ問題が発生します。x64ウィンドウ上

解決策は、c:\ windows \ assemblyディレクトリでSystem.Runtime.Serializationを見つけ、それを他のディレクトリにコピーして、CREATEASSEMBLYsqlコマンドを実行することでした。

一番、

于 2009-02-20T13:01:35.327 に答える
0

SQL CLR 内で WCF Web サービスを呼び出そうとしたときに、同様の問題が発生しました。.NET から非常に多くのアセンブリをロードするため、機能させることができませんでした。

最終的に、汎用 WebClient を使用して WCF サーバーへの HTTP 要求を作成します。これは非常にうまく機能し、最小限のアセンブリを SQL Server にロードする必要があります。

于 2009-01-29T09:06:26.163 に答える
0

少なくとも SQL Server 2005 では、SQL CLR でサポートされているアセンブリはほんの一握りしかありませんでした。WCF がその 1 つだったとは思えません。ざっと検索したところ、2008 SQL CLR で大きく変更されたという結論に至るものは何も見つかりませんでした。

参照: http://support.microsoft.com/kb/922672

于 2009-01-28T23:14:07.043 に答える