Linee guida e limitazioni per i servizi Web XML nativi

Questa caratteristica verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa caratteristica in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.

Le linee guida e le limitazioni seguenti si applicano alle richieste relative ai servizi Web XML nativi:

  • Quando una sessione SOAP senza nome, che esiste solo per la durata di una singola richiesta, richiede la notifica della transazione e include l'istruzione BEGIN TRANSACTION ma non l'istruzione COMMIT TRANSACTION o ROLLBACK TRANSACTION, il server esegue il rollback della transazione, ma non include il nodo di notifica del rollback della transazione nella risposta SOAP.

  • Il supporto per i servizi Web XML nativi è disponibile solo su istanze di SQL Server in esecuzione sulle versioni del sistema operativo Windows che supportano l'API HTTP (Http.sys). Se si tentano di distribuire i servizi Web XML nativi su un'istanza di SQL Server che non soddisfa questo requisito e non supporta Http.sys, le operazioni DDL (Data Definition Language) genereranno un errore e non si verificherà alcuna attesa nativa.

  • Se l'istanza di SQL Server è in esecuzione su Windows XP Professional, potrebbe non essere possibile creare correttamente gli endpoint. Se ad esempio Internet Information Services (IIS) è in esecuzione, il tentativo di eseguire un'istruzione CREATE ENDPOINT avrà esito negativo e verrà restituito l'errore seguente: "Errore ('0x80070020') durante il tentativo di registrare l'endpoint 'endpointName'."

    Questo errore indica un conflitto di elaborazione tra l'istanza di SQL Server e IIS che si verifica in quanto IIS è in attesa sulla porta 80 in Windows XP. Per risolvere questo problema, eseguire le operazioni seguenti:

    • Interrompere il servizio Web

    • Eseguire un nuovo tentativo di esecuzione di CREATE ENDPOINT utilizzando un numero di porta diverso da 80.

  • È possibile configurare gli endpoint perché utilizzino più porte, ma non specificare due porte dello stesso tipo. Ad esempio, è possibile specificare una porta non protetta e una porta SSL, ma non due porte non protette o due porte SSL.

  • Le funzioni definite dall'utente valutate a livello di tabella non sono supportate.

  • SOAP non supporta l'esposizione di stored procedure estese come metodi Web.

  • Non è possibile disabilitare endpoint non HTTP (lo stato di un endpoint può essere impostato su disabilitato solo per endpoint HTTP).

  • Sebbene la specifica SOAP escluda in modo esplicito le istruzioni di elaborazione XML nelle richieste e nelle risposte SOAP, SQL Server non prevede questa limitazione. Se le istruzioni di elaborazione (PI) sono presenti nella busta di una richiesta SOAP, il server le ignora. Se le PI sono visualizzate nel contenuto di un parametro XML, vengono rese persistenti come parte dei dati XML. Le risposte SOAP non dovrebbero includere istruzioni di elaborazione a meno che siano parte di un parametro XML recuperato. Una delle implicazioni di questo comportamento consiste nel fatto che le applicazioni client SOAP potrebbero non accettare un valore dell'istanza della riga con tipo di dati xml che include PI, oppure potrebbero eliminare le PI incluse nell'XML tipizzato restituito da SQL Server. Se questo rappresenta uno scenario importante, è possibile generare servizi Web che convertono qualsiasi tipo di dati xml in tipi NVarChar o VarBinary prima che il servizio li restituisca ai client SOAP.

  • Per una maggiore interoperabilità con Visual Studio 2005, verificare che eventuali spazi dei nomi utilizzati nei metodi Web degli endpoint siano diversi da quelli utilizzati con gli schemi dei tipi di dati xml anch'essi in uso sull'endpoint.

  • I risultati WSDL restituiti da un endpoint possono includere uno schema XSD non valido, ad esempio nel caso in cui un singolo spazio dei nomi venga importato più volte in uno degli scenari seguenti:

    • L'endpoint include più parametri di tipo XML che fanno riferimento a insiemi di schemi diversi, ognuno dei quali definisce lo stesso spazio dei nomi.

    • L'endpoint include un parametro di tipo XML che fa riferimento a un URI dello spazio dei nomi predefinito per l'utilizzo con i servizi Web XML nativi in SQL Server. Tra gli URI dello spazio dei nomi predefiniti ai quali questo scenario potrebbe applicarsi sono inclusi quelli elencati nella tabella seguente.

      Prefisso

      URI dello spazio dei nomi

      sql

      https://schemas.microsoft.com/sqlserver/2004/SOAP

      sqloptions

      https://schemas.microsoft.com/sqlserver/2004/SOAP/Options

      sqlsoaptypes

      https://schemas.microsoft.com/sqlserver/2004/SOAP/types

      sqlmessage

      https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlMessage

      sqlparameter

      https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlParameter

      sqlresultstream

      https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlResultStream

      sqlrowcount

      https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlRowCount

      sqltransaction

      https://schemas.microsoft.com/sqlserver/2004/SOAP/types/SqlTransaction

      sqltypes

      https://schemas.microsoft.com/sqlserver/2004/sqltypes

      xml

      http://www.w3.org/XML/1998/namespace

      xsd

      http://www.w3.org/2001/XMLSchema

      xsi

      http://www.w3.org/2001/XMLSchema-instance