Udostępnij za pośrednictwem


Przykładowe aplikacje wysyłania żądań usług sieci Web XML macierzysty

This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

Aby pokazać, w jaki sposób są wysyłane żądania protokołu SOAP dostępne są następujące próbki pracy i odpowiedzi są przetwarzane.Te przykłady obejmują Visual Studio 2005 Klient, zarówno C# i Visual Basic.

Ustawienia wstępne

Do aplikacji przykładowych wymagają ustawień wspólnych.Ta instalacja obejmuje następujące kroki:

  1. Tworzenie procedura przechowywana próbki.

  2. Tworzenie funkcja zdefiniowanej przez użytkownika.

  3. Utwórz punkt końcowy HTTP SOAP.

Uwaga

Do tworzenia tych obiektów w AdventureWorks Przykładowa baza danych, można użyć albo SQL Server Management Studio lub Osql polecenia narzędzia.Aby uzyskać informacje na temat instalowania AdventureWorks Przykładowe bazy danych, zobacz Considerations for Installing SQL Server Samples and Sample Databases.

Tworzenie procedura przechowywana (GetCustomerInfo)

Następujące procedura przechowywana opracowano z myślą o pokazuje, jak aplikacja klient obsługuje dane wejściowe i parametrów wyjściowych, kod powrotu, wyniki kwerendy i błędy gdyby występuje błąd.

USE AdventureWorks
GO
DROP PROCEDURE GetCustomerInfo
GO
CREATE PROCEDURE GetCustomerInfo
                    @CustomerID nchar(5),
                    @OutputParam nchar(5) OUTPUT 
AS  

  SELECT @OutputParam = '99999'  
  -- The following INSERT should fail, and an-error returned 
  -- to the client.
  INSERT Store (CustomerID) VALUES (1)

 -- Execute a SELECT statement.
 SELECT top 3 SalesOrderID, OrderDate 
 FROM   Sales.SalesOrderHeader
 WHERE  CustomerID = @CustomerID

 -- Execute SELECT returning XML.
  SELECT CustomerID, SalesOrderID, OrderDate 
  FROM   Sales.SalesOrderHeader
  WHERE  CustomerID = @CustomerID
  for xml auto, XMLSCHEMA

  PRINT 'Hello World'
RETURN 0
Go

Ta procedura przechowywana ma dwa parametry: Parametr wejściowy (CustomerID) i (parametr wyjściowyOutParam) demonstrujące sposób przekazywania parametrów.

Procedura przechowywana wykonuje następujące instrukcje:

  • An INSERT instrukcja that intentionally fails, returning an error. Błąd jest celowa, aby pokazać, w jaki sposób błędy są zwracane w odpowiedź protokołu SOAP.W Visual Studio 2005, błędy są zwracane jako SqlMessage obiektów.

  • A SELECT Instrukcja. W Visual Studio 2005, wynikowy zestaw wierszy są zwracane jako Zestaw danych obiektu.

  • A SELECT FOR XML Kwerenda, która zwraca dane XML. W Visual Studio 2005, wynikowy zestaw wierszy są zwracane jako SqlXml obiektu.

  • A PRINT Instrukcja. Wynikiem tego jest zwracany w Visual Studio 2005 jako SqlMessage obiektu.

Tworzenie funkcja zdefiniowanej przez użytkownika (UDFREturningAScalar)

Ta funkcja zwraca wartość całkowitą.

USE AdventureWorks
GO
CREATE FUNCTION UDFReturningAScalar() 
RETURNS int
AS
BEGIN
   RETURN 555
END
Go

Tworzenie punktu końcowego SOAP protokołu HTTP (sql_endpoint)

Ten punkt końcowy udostępnia procedura przechowywana i funkcja zdefiniowanej przez użytkownika jako metody sieci Web.Punkt końcowy jest również skonfigurowany do zezwalania na kwerend ad hoc.Aplikacja klient mogą wysyłać żądania protokołu SOAP w przypadku kwerend ad hoc do punktu końcowego.

Należy zauważyć, że trzeba będzie podać nazwa serwera jako wartość Nazwa hosta podczas rezerwowania obszaru nazw HTTP (sp_reserve_http_namespace) dla użytkownika końcowego, a także po zakończeniu SITE parametr. Ponadto wartości Port musi odpowiadać port HTTP, używane przez wystąpienie SQL Server, takie jak "80" lub TCP inny numer portu, jeżeli ma ona zastosowanie.

USE AdventureWorks
GO
DROP ENDPOINT sql_endpoint
GO
EXEC sp_reserve_http_namespace N'http://hostname:port/sql' 
-- EXEC sp_reserve_http_namespace N'https://www.microsoft.com:80/sql' for example
GO
CREATE ENDPOINT sql_endpoint 
   STATE = STARTED
AS HTTP(
   PATH = '/sql', 
   AUTHENTICATION = (INTEGRATED ), 
   PORTS = ( CLEAR ),
   SITE = 'server'
)
FOR SOAP (
   WEBMETHOD 'http://tempUri.org/'.'GetCustomerInfo' 
            (name='AdventureWorks.dbo.GetCustomerInfo', 
             schema=STANDARD ),
   WEBMETHOD 'UDFReturningAScalar' 
            (name='AdventureWorks.dbo.UDFReturningAScalar'),
   BATCHES = ENABLED,
   WSDL = DEFAULT,
   DATABASE = 'AdventureWorks',
   NAMESPACE = 'http://Adventure-Works/Customers'
)
GO
USE master
EXEC sp_grantlogin @loginame='domain\userOrGroup'
EXEC sp_grantdbaccess @loginame='domain\userOrGroup'
GRANT CONNECT ON ENDPOINT::sql_endpoint TO [domain\userOrGroup]
GO

W poprzednim kodzie należy pamiętać o następujących kwestiach:

  • Istnieją dwie metody sieci Web, które są zdefiniowane w tworzeniu tego punktu końcowego.

  • The WSDL value is zestaw to DEFAULT. W związku z tym klient może żądać WSDL odpowiedzi z serwera.

  • The BATCHES value is zestaw to ENABLED. W związku z tym klient może wysyłać żądania kwerend ad hoc do tego punktu końcowego.

  • Metoda sieci Web UDFReturningAScalar nie określono obszaru nazw opcjonalne. Korzysta z obszaru nazw określonych w NAMESPACE wartość.

  • Wartości domena\userOrGroup są tworzone jako SQL Server Identyfikator logowania powinna być zestaw rzeczywistej domena użytkownika lub grupy, który wymaga dostępu do punktu końcowego HTTP.