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

Ta funkcja zostanie usunięta z przyszłej wersji programu Microsoft SQL Server. Należy unikać stosowania tej funkcji w nowych projektach oraz zaplanować modyfikację aplikacji, w których obecnie jest używana ta funkcja.

Pokaż, jak wysłane żądania protokołu SOAP dostępne są następujące próbki pracy i odpowiedzi są przetwarzane.Te przykłady zawierają Visual Studio 2005 klient, zarówno C# i Visual Basic.

Wstępnej instalacji

Przykładowe aplikacje wymagają wspólne ustawienia.Ta instalacja obejmuje następujące etapy:

  1. Tworzenie procedura składowana próbki.

  2. Tworzenie funkcja zdefiniowanej przez użytkownika.

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

Ostrzeżenie

Do tworzenia tych obiektów w AdventureWorks2008R2 Przykładowa baza danych, można użyć albo SQL Server Management Studio lub osql polecenia narzędzia.Aby uzyskać informacje dotyczące sposobu instalowania AdventureWorks2008R2 Przykładowe bazy danych, zobacz Zagadnienia dotyczące instalowania przykładów i przykładowych baz danych programu SQL Server.

Tworzenie procedury przechowywanej (GetCustomerInfo)

Następującą procedura składowana zaprojektowano demonstrujące sposób aplikacja klient obsługi danych wejściowych i parametrów wyjściowych, kod zwrotny, wyniki kwerendy i błędy gdyby wystąpić awaria.

USE AdventureWorks2008R2;
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 składowana ma dwa parametry: Parametr wejściowy (CustomerID) oraz parametr wyjściowy (OutParam), aby pokazać, jak parametry są przekazywane.

procedura składowana wykonuje następujące instrukcje:

  • INSERT instrukcja celowo niepowodzenia, zwracany jest błąd.Błąd jest zamierzone Pokaż, jak 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 DataSet obiektu.

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

  • A PRINT instrukcja.Wynik jest zwracany w Visual Studio 2005 jako SqlMessage obiektu.

Tworzenie funkcji zdefiniowanej przez użytkownika (UDFREturningAScalar)

Ta funkcja zwraca wartość całkowitą.

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

Tworzenie punktu końcowego SOAP HTTP (sql_endpoint)

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

Należy zauważyć, że będzie trzeba podać nazwa serwera jako wartość hostname podczas rezerwacji obszaru nazw HTTP (sp_reserve_http_namespace) dla użytkownika końcowego i po zakończeniu SITE parametru.Ponadto wartość portu musi odpowiadać port HTTP, używane przez wystąpienie SQL Server, takich jak "80" lub inny numer portu TCP, jeśli ma to zastosowanie.

USE AdventureWorks2008R2;
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='AdventureWorks2008R2.dbo.GetCustomerInfo', 
             schema=STANDARD ),
   WEBMETHOD 'UDFReturningAScalar' 
            (name='AdventureWorks2008R2.dbo.UDFReturningAScalar'),
   BATCHES = ENABLED,
   WSDL = DEFAULT,
   DATABASE = 'AdventureWorks2008R2',
   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 Uwaga:

  • 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 odpowiedź z serwera.

  • The BATCHES value is zestaw to ENABLED.Dlatego klient mogą wysyłać żądania kwerend ad hoc do tego punktu końcowego.

  • metoda sieci Web UDFReturningAScalar nie określa opcjonalny obszaru nazw.Używa nazw określonych w NAMESPACE wartości.

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