web-dev-qa-db-ja.com

データを取得するWebサービスとしてSQL Serverデータベースを公開する

Microsoft SQL ServerのテーブルのデータをWebサービスとして公開する.NETツールはありますか?コードを書く必要がありますか?サンプルはありますか?データを公開する方法については何をお勧めしますか?

18
abmv

WCF Data Services を使用することもできますが、 Antonによる と同様に、データベース全体または部分的なデータベースへの直接パスを提供することをお勧めします。

別のオプションは、「顧客を追加することはできますが、請求書を削除することは許可されていません」のような小さな操作セットのみを許可するデータアクセスレイヤーを構築することです。

10
Rubens Farias

SQL Server 2005以降、ネイティブXML Webサービスをデータベースから直接公開できます。

SQL Serverは、HTTPエンドポイントを介してHTTP SOAP要求をネイティブにリッスンするように構成できます。一般に、ストアドプロシージャまたはユーザー定義関数をHTTPエンドポイントとして公開する必要があるため、少しのコーディングが必要です。 。しかし、例から理解するのは非常に簡単なはずです。

通常は、次のようにストアドプロシージャを作成することから始めます。

CREATE PROCEDURE [dbo].[getContact]
   @ID [int]       
AS
BEGIN
   SELECT * FROM [AdventureWorks].[Person].[Contact] WHERE ContactID = @ID   
END;

そして、次のようにHTTPエンドポイントを定義します。

CREATE ENDPOINT SQLEP_GetContact
    STATE = STARTED
AS HTTP
(
    PATH = '/Contact',
    AUTHENTICATION = (INTEGRATED),
    PORTS = (CLEAR),
    SITE = 'localhost'
)
FOR SOAP
(
    WEBMETHOD 'ContactInfo' (NAME='AdventureWorks.dbo.getContact'),
    BATCHES = DISABLED,
    WSDL = DEFAULT,
    DATABASE = 'AdventureWorks',
    NAMESPACE = 'http://AdventureWorks/Contact'
);

エンドポイントを作成したら、サーバーにHTTPリクエストを送信して、エンドポイントが応答していることを確認できます:http://localhost/Contact?wsdl

エンドポイントを変更または停止するには、ALTER ENDPOINTコマンドを使用できます。

ALTER ENDPOINT SQLEP_GetContact
    STATE = STOPPED;

次の記事をチェックして続行してください。

UPDATE:以下の Ed Harper のコメントに続き、ネイティブXML WebサービスはSQL Server 2008で非推奨になっていることに注意してください( 2009年11月)、この機能はSQL Serverの将来のバージョンで削除される予定です。マイクロソフトは、代わりにWCF Webサービスの使用を提案しています。ソース: MSDN-ネイティブXML Webサービス:SQL Server 2008で非推奨

19
Daniel Vassallo

Scott Hanselmanが、Visual Studio 2010を使用してデータベースからOData/Open Data/WCF Data Serviceを作成する方法を説明します。

http://www.hanselman.com/blog/CreatingAnODataAPIForStackOverflowInlusionXMLAndJSONIn30Minutes.aspx

3

.net Framework 3.5以降で利用可能なWCF Data Servicesについて読んでみたいと思います。

1
Anton