OLEオートメーション手順sp_OA*
を使用しないでください。それらは正式に推奨されていないようですが、SQLCLRはOLEオートメーションプロシージャと拡張ストアドプロシージャの両方を置き換えます。
はい、これはSQLCLRでも簡単に実行できます。 @ CodeCasterの回答に示されているように)WCFを使用するか、HttpWebRequest/HttpWebResponseを使用してサンプルを見つけることができます(この回答の詳細はHow to invoke webservice from SQL Server stored procedureです)。また、時には、あなたはまた、シリアル化アセンブリを追加する必要がありますのでご注意ください:Using Webservices and Xml Serialization in CLR Integration
コーディングとメンテナンス
Webサービスは、素敵なAPIを提供していますが、構造を変更する場合は、再コンパイルとで再デプロイする必要がありますこれの少なくとも一部。交換される情報が十分に単純であると仮定すると、これを標準的なWeb要求として扱うと柔軟性が増します。パラメータとURIを受け取り、適切にフォーマットされたXMLリクエストを構築してURIに送信する一般的なWebリクエスト関数(スカラーまたはTVF)を作成できます。それから、応答を取得し、単にXMLを返します。したがって、素敵なオブジェクトを取得するのではなく、XMLレスポンスを解析する必要があるため、少し責任を変えてください。しかし、XMLはSQL Serverで簡単に解析することができ、この関数を任意の数の場所で再利用できます。また、リモートサービスが更新された場合、ストアドプロシージャを更新してWebサービスに渡されるクエリ文字列を変更したり、XML応答の解析を変更したりするのは簡単なALTER PROCEDUREであり、簡単にテストできます。 SQLCLRアセンブリを再コンパイル/再デプロイする必要はありません。
セキュリティに関係なく、あなたが望む呼び出すには、主なものは、セキュリティが賢明な、怠惰なことや、@からリンクされたページにも示すように、(TRUSTWORTHY ON
をオンにしないでにあるWebサービスの方法を「純粋」の
CodeCasterの答え、残念なことに、ここではほとんどの他の例がインターウェブ上にあります)。これを安全にするための適切な方法は、次の操作を行うことです。
は、[master]
データベースでは、あなたの国会 - に署名し、あなたのアセンブリのDLLから非対称キーを作成します
- 。また、
[master]
で、 -
非対称鍵それからログインを作成 - はあなたの新しいものではありません
UNSAFE
、
EXTERNAL_ACCESS
の
PERMISSION_SET
であなたのアセンブリを作成
EXTERNAL ACCESS ASSEMBLY
許可
ログイン付与します