Condividi tramite


Eseguire stored procedure con un singolo parametro XML in SQL Server usando BizTalk Server

L'esecuzione di una stored procedure che accetta un singolo parametro è simile all'esecuzione di qualsiasi altra stored procedure, come descritto in Eseguire stored procedure in SQL Server tramite BizTalk Server. Tuttavia, per l'approccio descritto nel collegamento precedente, è necessario generare metadati per la stored procedure in fase di progettazione e creare un'orchestrazione per richiamare la routine in fase di esecuzione.

Si consideri uno scenario in cui si vuole passare un singolo valore a una stored procedure senza eseguire alcuna elaborazione su tale valore. In questi casi, non si vuole che il sovraccarico della generazione di metadati, la creazione di un'orchestrazione, la distribuzione dell'orchestrazione e l'esecuzione dell'operazione. È invece possibile configurare una porta di trasmissione WCF-Custom o WCF-SQL per richiamare direttamente la stored procedure. In questo argomento viene illustrato come eseguire queste attività usando la console di amministrazione di BizTalk Server.

Nota

In questo argomento vengono fornite istruzioni su come configurare una porta di trasmissione WCF-Custom per l'esecuzione di una stored procedure che accetta un singolo parametro. È possibile eseguire gli stessi passaggi configurando una porta WCF-SQL. Per istruzioni sulla configurazione della porta WCF-SQL, vedere Configurare una porta tramite l'adapter WCF-SQL.

Richiamare stored procedure senza orchestrazione

Per illustrare come eseguire stored procedure con singoli parametri senza orchestrazione, in questo argomento viene utilizzata la stored procedure ADD_LAST_EMP_XML_INFO. Questa procedura accetta un valore XML come parametro e lo inserisce nella colonna Address della tabella Employee . È necessario disporre del valore XML che verrà passato alla stored procedure. Tuttavia, per eseguire la stored procedure utilizzando l'adattatore, è necessario inviare un messaggio di richiesta conforme allo schema della routine e contenente il valore XML per il campo Address al SQL Server. È quindi necessario creare il messaggio di richiesta in base a:

  • Usando l'opzione Modello nella configurazione della porta di trasmissione usando il quale è possibile creare un messaggio di richiesta usando un modello di messaggio.

  • Inserimento del valore XML per il campo Indirizzo nel messaggio.

    Tutti questi passaggi sono descritti in dettaglio in questo argomento. È necessario eseguire il set di attività seguente:

  1. Creare una porta di ricezione FILE in cui eliminare il file XML che verrà inserito nel campo ADDRESS XML della tabella Employee . Si supponga che questa porta sia denominata porta MessageIn .

  2. Creare un WCF-Custom porta di trasmissione unidirezionale che seleziona il file XML dalla porta di ricezione FILE, costruisce il messaggio usando il modello di messaggio e lo invia a SQL Server per eseguire la stored procedure.

    Questa parte dell'argomento fornisce istruzioni sulla configurazione di una porta di trasmissione WCF-Custom con il modello di messaggio.

Nota

Anche se le informazioni contenute in questo argomento illustrano come eseguire una stored procedure con un singolo parametro XML, è possibile eseguire le attività per eseguire qualsiasi operazione che accetta un singolo parametro di qualsiasi tipo di dati. L'unica differenza consiste nel creare un modello di messaggio per un'operazione specifica. È possibile creare un modello di messaggio accettando il messaggio di richiesta usato per eseguire l'operazione usando un'orchestrazione e sostituendo il valore del parametro con il corpo del messaggio BizTalk.

Configurare una porta di trasmissione WCF-Custom

Prima di creare la porta di trasmissione WCF-Custom, assicurarsi di aver creato la porta di ricezione FILE , MessageIn.

  1. Avviare la console di amministrazione di BizTalk Server.

  2. Nell'albero della console espandere Gruppo BizTalk e quindi Applicazioni.

  3. Espandere l'applicazione in cui si vuole distribuire l'adapter SQL.

  4. Fare clic con il pulsante destro del mouse su Porte di trasmissione, scegliere Nuovoe quindi porta di trasmissione unidirezionale statica.

  5. Nella scheda Generale della finestra di dialogo Proprietà porta di trasmissione digitare un nome per la porta di trasmissione.

  6. Configurare la porta per la ricezione di tutti i messaggi rilasciati nella porta di ricezione FILE , MessageIn.

    1. Nel riquadro sinistro della finestra di dialogo Proprietà porta di trasmissione fare clic su Filtri.

    2. Nel riquadro destro, sotto la colonna Proprietà , fare clic sulla griglia e quindi selezionare BTS. Proprietà ReceivePortName .

    3. Per la colonna Operatore selezionare "==".

    4. Per la colonna Valore specificare il nome della porta di ricezione FILE, MessageIn.

  7. Nella scheda Generale della finestra di dialogo Proprietà porta di trasmissione selezionare WCF-Custom nell'elenco a discesa Tipo e quindi fare clic su Configura.

  8. Nella finestra di dialogo Proprietà trasporto personalizzato WCF eseguire le operazioni seguenti:

    1. Fare clic sulla scheda Generale e nel campo Indirizzo (URI) specificare l'URI di connessione per SQL Server. Per altre informazioni sull'URI di connessione, vedere Creare l'URI di connessione SQL Server.

    2. Nella scheda Generale digitare l'azione per l'operazione nella casella di testo Azione . Per un elenco di azioni per ogni operazione, vedere Messaggi e schemi di messaggio . Ad esempio, l'azione per richiamare il ADD_LAST_EMP_XML_INFO è:

      Procedure/dbo/ADD_LAST_EMP_XML_INFO  
      
    3. Fare clic sulla scheda Binding e nell'elenco Tipo di associazione selezionare sqlBinding. È possibile specificare le diverse proprietà di associazione esposte dall'adapter SQL. Per altre informazioni sulle proprietà di associazione, vedere Informazioni sull'adapter BizTalk per le proprietà di associazione dell'adapter SQL Server.

    4. Fare clic sulla scheda Credenziali, quindi effettuare una delle operazioni seguenti:

      • Selezionare l'opzione Non usare Single Sign-On e specificare il nome utente e la password per connettersi a SQL Server. Si noti che per il nome utente e la password viene applicata la distinzione tra maiuscole e minuscole.

        Nota

        Se si vuole connettersi a SQL Server usando autenticazione di Windows, specificare un nome utente e una password vuoti.

      • Selezionare l'opzione Usa Single Sign-On e quindi specificare un'applicazione Single Sign-On (SSO) enterprise affiliata.

        Per altre informazioni sulla sicurezza in relazione alle BizTalk Server, vedere Sicurezza con l'adapter SQL e BizTalk Server.

    5. Fare clic sulla scheda Messaggi e nella sezione Corpo del messaggio WCF in uscita scegliere l'opzione Modello .

    6. Nella casella di testo XML specificare il modello che verrà usato per costruire il messaggio WCF. In questo modo si crea un messaggio conforme all'operazione di ADD_LAST_EMP_XML_INFO per l'adapter SQL basato su WCF.

      Specificare il modello per il messaggio WCF in uscita

      Per la stored procedure ADD_LAST_EMP_XML_INFO, è necessario specificare il modello seguente:

      <ADD_LAST_EMP_XML_INFO xmlns="http://schemas.microsoft.com/Sql/2008/05/Procedures/dbo">  
      <xml_info>  
      <bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2007" encoding="string"/>  
      </xml_info>  
      </ADD_LAST_EMP_XML_INFO>  
      

      Importante

      La codifica nel modello di messaggio deve essere sempre "string" indipendentemente dal tipo del parametro per l'operazione che verrà richiamata usando la porta di trasmissione. Ad esempio, il ADD_LAST_EMP_XML_INFO accetta un parametro di tipo XML, ma la codifica nel modello di messaggio è stringa.

      Nota

      È possibile creare questo modello di messaggio copiando il messaggio di richiesta per la stored procedure e sostituendo il valore all'interno dei <tag xml_info> con il corpo del messaggio BizTalk. È possibile ottenere il messaggio di richiesta per la stored procedure generando lo schema per la procedura utilizzando il componente aggiuntivo Consume Adapter Service e quindi generando un'istanza dello schema per ottenere il codice XML della richiesta.

    7. Per tornare alla finestra di dialogo Proprietà porta di trasmissione , fare clic su OK.

  9. Nell'elenco Gestore di invio selezionare BizTalkServerApplication.

  10. Nell'elenco Invia pipeline selezionare la pipeline corrispondente a PassThruTransmit.

  11. Fare clic su OK.

Avviare l'applicazione

Per avviare l'applicazione BizTalk, è possibile avviare sia il percorso di ricezione FILE che la porta di trasmissione WCF-Custom singolarmente. È ora necessario copiare un file XML nella cartella mappata al percorso di ricezione FILE. L'applicazione BizTalk utilizza il file e il valore XML viene inserito nella colonna Address della tabella Employee. È possibile verificarlo usando un client SQL Server e selezionando i record dalla tabella Employee.

Uso di una porta di trasmissione WCF-Custom bidirezionale

Le istruzioni in questo argomento, nella sezione Come configurare una porta di trasmissione WCF-Custom, illustrano come configurare una porta di trasmissione unidirezionale WCF-Custom per eseguire una stored procedure con un singolo parametro senza usare un'orchestrazione BizTalk. In questo caso, tuttavia, per verificare se la stored procedure viene eseguita correttamente, è necessario verificare nel database SQL Server se la colonna Address nella tabella Employee viene aggiornata.

È invece possibile creare una porta di trasmissione bidirezionale WCF-Custom che ottiene anche la risposta da SQL Server se la stored procedure viene eseguita correttamente. Se si crea una porta WCF-Custom bidirezionale, è necessario eseguire alcuni passaggi aggiuntivi. Si noti che sarà comunque necessario un percorso di ricezione FILE, come indicato nelle istruzioni precedenti.

  1. Creare una porta di trasmissione WCF-Custom bidirezionale, ad esempio ExecProcedure. I passaggi per configurare la porta di trasmissione sono simili a quelli per la porta di trasmissione unidirezionale. L'unica differenza è che per la porta bidirezionale è necessario specificare anche una pipeline di ricezione. Assicurarsi di selezionare PassThruReceive per la pipeline di ricezione.

  2. Creare una porta di trasmissione FILE. Questa porta consente di eliminare il messaggio di risposta dal database SQL Server a una cartella. Usando la scheda Filtri della finestra di dialogo delle proprietà della porta, configurare la porta di trasmissione FILE per ricevere tutti i messaggi di risposta dalla porta di trasmissione WCF-Custom.

    1. Nel riquadro sinistro della finestra di dialogo Proprietà porta di trasmissione fare clic su Filtri.

    2. Nel riquadro destro, sotto la colonna Proprietà , fare clic sulla griglia e quindi selezionare BTS. Proprietà SPName .

    3. Per la colonna Operatore selezionare "==".

    4. Per la colonna Valore specificare il nome della porta di trasmissione WCF-Custom . ExecProcedure

    Avviare tutte e tre le porte. Copiare un file XML nella cartella mappata al percorso di ricezione FILE. Cercare la risposta nella cartella mappata alla porta di trasmissione FILE.

Vedere anche

Sviluppare applicazioni BizTalk tramite l'adapter SQL