Condividi tramite


Applicazioni di esempio per l'invio di richieste ai servizi Web XML nativi

Gli esempi seguenti illustrano l'invio delle richieste SOAP e l'elaborazione delle risposte. Gli esempi includono un client di Visual Studio 2005, sia C# che Visual Basic.

Configurazione iniziale

Per tutte le le applicazioni di esempio è necessaria una configurazione comune, che comprende i passaggi seguenti:

  1. Creazione di una stored procedure di esempio.
  2. Creazione di una funzione definita dall'utente.
  3. Creazione dell'endpoint HTTP SOAP.

[!NOTA] Per creare questi oggetti nel database di esempio AdventureWorks è possibile utilizzare SQL Server Management Studio oppure l'utilità osql. Per installare il database di esempio AdventureWorks, vedere Esecuzione del programma di installazione dei database di esempio AdventureWorks e degli esempi.

Creazione della stored procedure (GetCustomerInfo)

La stored procedure seguente è progettata per illustrare la gestione dei parametri di input e di output, del codice restituito, dei risultati di query e degli eventuali errori da parte di un'applicazione client.

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

La stored procedure include due parametri: un parametro di input (CustomerID) e un parametro di output (OutParam) per illustrare la procedura di passaggio dei parametri.

La stored procedure esegue le istruzioni seguenti:

  • Un'istruzione INSERT che ha esito negativo e restituisce un errore. L'errore è intenzionale, per illustrare la restituzione degli errori nella risposta SOAP. In Visual Studio 2005 gli errori vengono restituiti come oggetti SqlMessage.
  • Un'istruzione SELECT. In Visual Studio 2005 il set di righe risultante viene restituito come oggetto DataSet.
  • Una query SELECT FOR XML che restituisce dati XML. In Visual Studio 2005 il set di righe risultante viene restituito come oggetto SqlXml.
  • Un'istruzione PRINT, il cui risultato viene restituito in Visual Studio 2005 come oggetto SqlMessage.

Creazione della funzione definita dall'utente (UDFREturningAScalar)

La funzione restituisce un valore integer.

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

Creazione dell'endpoint HTTP SOAP (sql_endpoint)

L'endpoint espone la stored procedure e la funzione definita dall'utente come metodi Web ed è configurato per consentire le query ad hoc. L'applicazione client può inviare richieste SOAP di query ad hoc all'endpoint.

Si noti che sarà necessario immettere il nome del server come valore hostname quando si prenota lo spazio dei nomi HTTP (sp_reserve_http_namespace) per l'endpoint e anche quando si completa il parametro SITE. Il valore port inoltre deve corrispondere alla porta HTTP utilizzata dall'istanza di SQL Server, ad esempio "80" o un altro numero di porta TCP se applicabile.

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

Nel codice precedente, si noti quanto segue:

  • Nella creazione di questo endpoint vengono definiti due metodi Web.
  • Il valore WSDL è impostato su DEFAULT. Il client pertanto può richiedere una risposta WSDL dal server.
  • Il valore BATCHES è impostato su ENABLED. Il client pertanto può inviare richieste di query ad hoc all'endpoint.
  • Il metodo Web UDFReturningAScalar non specifica lo spazio dei nomi facoltativo e utilizza lo spazio dei nomi specificato nel valore NAMESPACE.
  • I valori di domain\userOrGroup creati come account di accesso di SQL Server vanno impostati sull'utente o il gruppo di dominio corrente che richiede l'accesso all'endpoint HTTP.

Vedere anche

Riferimento

Aggiunta di intestazioni SOAP alle applicazioni client
Aggiunta di supporto per la traccia SOAP nelle applicazioni client
Impostazione del server per l'attesa delle richieste di servizi Web XML nativi
Struttura dei messaggi di richiesta e di risposta SOAP
Linee guida e limitazioni per i servizi Web XML nativi

Concetti

Gestione del tipo di dati xml e dei tipi CLR definiti dall'utente

Altre risorse

Sviluppo di applicazioni client

Guida in linea e informazioni

Assistenza su SQL Server 2005