Condividi tramite


Eseguire operazioni composte su SQL Server usando BizTalk Server

L'adattatore SQL consente ai client dell'adapter di eseguire operazioni composte nel database SQL Server. Un'operazione composita può includere:

Nota

Se si esegue l'operazione sulle tabelle con colonne di tipi definiti dall'utente, assicurarsi di fare riferimento a Operazioni su tabelle e viste con tipi di User-Defined usando l'adattatore SQL prima di iniziare a sviluppare l'applicazione.

Come eseguire operazioni composte in SQL Server

L'esecuzione di un'operazione in SQL Server tramite l'adapter SQL con BizTalk Server comporta attività procedurali descritte in Blocchi predefiniti per sviluppare applicazioni BizTalk con l'adapter SQL. Per eseguire operazioni composte nel database SQL Server, queste attività sono:

  1. Creare un progetto BizTalk e generare lo schema per tutte le operazioni che si desidera richiamare.

  2. Creare manualmente un file di schema che include riferimenti a tutti gli schemi generati nel passaggio precedente.

  3. Creare messaggi nel progetto BizTalk per l'invio e la ricezione di messaggi dal database SQL Server. Questi messaggi devono essere conformi allo schema di richiesta e risposta creato nel passaggio precedente.

  4. Creare un'orchestrazione per richiamare l'operazione composita nel database SQL Server.

  5. Compilare e distribuire il progetto BizTalk.

  6. Configurare l'applicazione BizTalk creando porte di invio e ricezione fisiche.

  7. Avviare l'applicazione BizTalk.

    In questo argomento vengono fornite istruzioni su come eseguire queste attività.

Esempio basato su questo argomento

Un esempio, CompositeOperations, basato su questo argomento viene fornito con bizTalk Adapter Pack. Per altre informazioni, vedere Esempi per l'adapter SQL.

Generazione dello schema

In questo argomento viene illustrato come eseguire operazioni composte, nell'ordine specificato verranno eseguite le attività seguenti:

  • Inserire il record nella tabella EMPLOYEE.

  • Recuperare tutte le colonne per l'ultimo record inserito richiamando la stored procedure GET_LAST_EMP_DATA.

  • Eliminare il record dalla tabella EMPLOYEE.

    Eseguire gli script forniti con gli esempi per creare la tabella EMPLOYEE. Per altre informazioni sugli esempi, vedere Esempi di schemi.

    Per generare lo schema per queste operazioni, è necessario creare un progetto BizTalk e usare il componente aggiuntivo Use Adapter Service. Per altre informazioni su come generare schemi, vedere Recupero di metadati per SQL Server operazioni in Visual Studio usando l'adapter SQL.

Creazione di una definizione dello schema composito

È ora necessario creare uno schema composito che fa riferimento agli schemi creati per le singole operazioni. Seguire questa procedura per creare una definizione dello schema composito.

Per aggiungere una definizione dello schema composito

  1. Aggiungere un file di schema al progetto BizTalk. Fare clic con il pulsante destro del mouse sul nome del progetto, scegliere Aggiungi e quindi fare clic su Nuovo elemento. Nella finestra di dialogo Aggiungi nuovo elemento fare clic su File schema nella casella Categorie. Nella casella Modelli fare clic su Schema. Specificare un nome per il file dello schema e quindi fare clic su OK.

    Per questo esempio, specificare il nome del file dello schema come CompositeSchema.xsd.

  2. Aggiungere riferimenti allo schema generato per le diverse operazioni da eseguire. In questo esempio, i diversi schemi generati per le operazioni sono:

    • TableOperation.dbo.Employee.xsd per le operazioni Inserisci ed Elimina.

    • Procedure.dbo.xsd, per la stored procedure di GET_LAST_EMP_DATA.

      Per aggiungere riferimenti:

    1. Fare clic con il pulsante destro del mouse sul nodo schema> radice< in CompositeSchema.xsd e scegliere Proprietà.

    2. Nella casella Proprietà fare clic sul pulsante con i puntini di sospensione (...) nella proprietà Import .

      Importare le definizioni dello schema

    3. Nella finestra di dialogo Importa nuovo schema nell'elenco Importa nuovo schema selezionare Importazione XSD e quindi fare clic su Aggiungi.

    4. Nella finestra di dialogo Selezione tipi BizTalk espandere il nodo nome del progetto BizTalk, espandere Schemi e quindi selezionare lo schema da importare. In questo esempio selezionare <BizTalk_project_name>. TableOperation_dbo_Employee. Fare clic su OK.

      Ripetere questo passaggio per importare <BizTalk_project_name>. anche Procedure_dbo.

    5. Nella finestra di dialogo Importa fare clic su OK.

  3. Aggiungere due nodi figlio al nodo dello schema radice. Un nodo figlio corrisponde allo schema della richiesta per eseguire l'operazione composita. L'altro nodo figlio corrisponde allo schema di risposta. Il nodo corrispondente allo schema della richiesta può avere qualsiasi nome. Il nodo corrispondente allo schema di risposta deve essere chiamato <request_schema_node>Response. In questo esempio verrà chiamato il nodo dello schema di richiesta come Richiesta. Quindi, il nodo dello schema di risposta è denominato RequestResponse.

    Nota

    Per impostazione predefinita, viene aggiunto anche un nodo Radice a un nuovo file di schema. È possibile rinominare il nodo Radice in Richiesta. Per rinominare un nodo, fare clic con il pulsante destro del mouse sul nome del nodo e scegliere Rinomina.

    Per aggiungere un nodo nel <nodo Schema> :

    1. Fare clic con il pulsante destro del mouse sul <nodo Schema, scegliere Inserisci nodo schema> e fare clic su Record figlio.

    2. Rinominare il nuovo nodo in RequestResponse.

  4. Aggiungere nodi figlio nel nodo Request che corrispondono allo schema di richiesta per ogni operazione eseguita come parte dell'operazione composita. Per questo esempio, è necessario aggiungere nodi figlio corrispondenti al seguente:

    • Inserire ed eliminare le operazioni nella tabella EMPLOYEE.

    • GET_LAST_EMP_DATA stored procedure.

    Importante

    È necessario aggiungere i nodi nello stesso ordine in cui si desidera eseguire le operazioni. Ad esempio, se si vuole inserire un record, eseguire una stored procedure e quindi eliminare un record, è necessario aggiungere prima un nodo per l'operazione Di inserimento, seguito da un nodo per la stored procedure e infine un nodo per l'operazione Elimina.

    Per aggiungere nodi figlio al nodo Request :

    1. Fare clic con il pulsante destro del mouse sul nodo Richiesta , scegliere Inserisci nodo schema e quindi fare clic su Record figlio.

      Inserire nodi figlio per uno schema

    2. Rinominare il record in modo che corrisponda a uno schema di richiesta per un'operazione eseguita come parte dell'operazione composita. Ad esempio, rinominare il nodo in "Inserisci".

    3. Eseguire il mapping del nodo Inserisci allo schema di richiesta per l'operazione Inserisci nella tabella EMPLOYEE. A tale scopo, fare clic con il pulsante destro del mouse sul nodo Inserisci e scegliere Proprietà. Nella casella Proprietà selezionare Inserisci (Riferimento) nell'elenco Tipo struttura dati.

      Eseguire il mapping dei nodi figlio allo schema della richiesta

    4. Ripetere questi passaggi per aggiungere nodi per gli schemi di richiesta per GET_LAST_EMP_DATA stored procedure e l'operazione Elimina. Specificare i nomi dei nodi e eseguirne il mapping allo schema corrispondente, come indicato nella tabella seguente.

      Nome nodo Mappato allo schema
      GET_LAST_EMP_DATA GET_LAST_EMP_DATA (riferimento)
      Delete Elimina (riferimento)
  5. Aggiungere nodi figlio nel nodo RequestResponse che corrispondono allo schema di risposta per ogni operazione eseguita come parte dell'operazione composita. Per questo esempio, è necessario aggiungere nodi figlio corrispondenti al seguente:

    • Inserire ed eliminare le operazioni nella tabella EMPLOYEE.

    • GET_LAST_EMP_DATA stored procedure.

    Importante

    È necessario aggiungere i nodi figlio nello stesso ordine dei nodi figlio nel nodo Richiesta .

    Per aggiungere nodi figlio al nodo RequestResponse :

    1. Fare clic con il pulsante destro del mouse sul nodo RequestResponse , scegliere Inserisci nodo schema e fare clic su Record figlio.

    2. Rinominare il record in modo che corrisponda a uno schema di risposta per un'operazione eseguita come parte dell'operazione composita. Ad esempio, rinominare il nodo in "InsertResponse".

    3. Eseguire il mapping del nodo InsertResponse allo schema di risposta per l'operazione Inserisci nella tabella EMPLOYEE. A tale scopo, fare clic con il pulsante destro del mouse sul nodo InsertResponse e scegliere Proprietà. Nella casella Proprietà selezionare InsertResponse (Riferimento) nell'elenco Tipo struttura dati.

    4. Ripetere questi passaggi per aggiungere nodi per gli schemi di risposta per la stored procedure GET_LAST_EMP_DATA e l'operazione Elimina. Specificare i nomi dei nodi e eseguirne il mapping allo schema corrispondente, come indicato nella tabella seguente.

      Nome nodo Mappato allo schema
      GET_LAST_EMP_DATAResponse GET_LAST_EMP_DATAResponse (riferimento)
      Deleteresponse DeleteResponse (riferimento)
  6. Salvare il file CompositeSchema.xsd .

Definizione di messaggi e tipi di messaggio

Lo schema composito creato nell'ultimo passaggio descrive i "tipi" necessari per i messaggi in un'orchestrazione. Un messaggio è in genere una variabile, il tipo per cui è definito dallo schema corrispondente. È ora necessario creare messaggi per l'orchestrazione e collegarli allo schema creato nel passaggio precedente.

  1. Aggiungere un'orchestrazione al progetto BizTalk. Da Esplora soluzioni fare clic con il pulsante destro del mouse sul nome del progetto BizTalk, scegliere Aggiungi e quindi fare clic su Nuovo elemento. Digitare un nome per l'orchestrazione BizTalk e quindi fare clic su Aggiungi.

  2. Aprire la finestra Visualizzazione orchestrazione del progetto BizTalk, se non è già aperta. A tale scopo, fare clic su Visualizza, scegliere Altre finestre e quindi fare clic su Visualizzazione orchestrazione.

  3. In Visualizzazione orchestrazione fare clic con il pulsante destro del mouse su Messaggi e quindi scegliere Nuovo messaggio.

  4. Fare clic con il pulsante destro del mouse sul messaggio appena creato e quindi selezionare Finestra proprietà.

  5. Nel riquadro Proprietà per il Message_1 eseguire le operazioni seguenti:

    Usare Per
    Identificatore Digitare Request
    Tipo di messaggio Nell'elenco a discesa espandere Schemi, quindi selezionare CompositeOp.CompositeSchema.Request, dove CompositeOp è il nome del progetto BizTalk. CompositeSchema è lo schema creato manualmente per le operazioni composte.
  6. Ripetere il passaggio 2 per creare un nuovo messaggio. Nel riquadro Proprietà per il nuovo messaggio eseguire le operazioni seguenti:

    Usare Per
    Identificatore Digitare Response
    Tipo di messaggio Nell'elenco a discesa espandere Schemi, quindi selezionare CompositeOp.CompositeSchema.RequestResponse.

Configurazione dell'orchestrazione

È necessario creare un'orchestrazione BizTalk per usare BizTalk Server per eseguire operazioni composte su SQL Server. In questa orchestrazione si rilascia un messaggio di richiesta in una posizione di ricezione definita. Il messaggio di richiesta deve essere conforme allo schema composito creato in precedenza. L'adattatore SQL usa questo messaggio e lo passa a SQL Server. La risposta da SQL Server viene salvata in un'altra posizione. È necessario includere rispettivamente le forme Invia e Ricezione per inviare messaggi a SQL Server e ricevere risposte. Un'orchestrazione di base per l'esecuzione di operazioni composte è simile alla seguente:

Orchestrazione per operazioni composite peform

Aggiunta di forme di messaggio

Assicurarsi di specificare le proprietà seguenti per ognuna delle forme del messaggio. I nomi elencati nella colonna Shape sono i nomi delle forme del messaggio visualizzate nell'orchestrazione appena menzionata.

Forma Tipo di forma Proprietà
ReceiveMessage Ricevere - Impostare nome su ReceiveMessage
- Impostare Attiva su True
SendMessage Send - Impostare nome su SendMessage
ReceiveResponse Ricevere - Impostare nome su ReceiveResponse
- Impostare Attiva su False
SendResponse Send - Impostare nome su SendResponse

Aggiunta di porte

Assicurarsi di specificare le proprietà seguenti per ognuna delle porte logiche. I nomi elencati nella colonna Porta sono i nomi delle porte visualizzate nell'orchestrazione.

Porta Proprietà
MessageIn - Impostare identificatore su MessageIn
- Impostare tipo su MessageInType
- Impostare il modello di comunicazionesu unidirezionale
- Impostare la direzione di comunicazione su Ricezione
LOBPort - Impostare identificatore su LOBPort
- Impostare tipo su LOBPortType
- Impostare il modello di comunicazione su Request-Response
- Impostare la direzione di comunicazione su Send-Receive
ResponseOut - Impostare identificatore su ResponseOut
- Impostare tipo su ResponseOutType
- Impostare il modello di comunicazionesu unidirezionale
- Impostare la direzione di comunicazione su Invia

Specificare i messaggi per le forme di azione e connetterli alle porte

La tabella seguente specifica le proprietà e i relativi valori che è necessario impostare per specificare i messaggi per le forme di azione e collegare i messaggi alle porte. I nomi elencati nella colonna Shape sono i nomi delle forme del messaggio visualizzate nella orchestrazione menzionata in precedenza.

Forma Proprietà
ReceiveMessage - Impostare messaggio su richiesta
- Impostare l'operazione su MessageIn.CompositeOp.Request
SendMessage - Impostare messaggio su richiesta
- Impostare l'operazione su LOBPort.CompositeOp.Request
ReceiveResponse - Impostare messaggio su risposta
- Impostare l'operazione su LOBPort.CompositeOp.Response
SendResponse - Impostare messaggio su risposta
- Impostare l'operazione su ResponseOut.CompositeOp.Request

Dopo aver specificato queste proprietà, le forme e le porte del messaggio sono connesse e la orchestrazione è stata completata.

È ora necessario compilare la soluzione BizTalk e distribuirla in un BizTalk Server. Per altre informazioni, vedere Creazione e esecuzione di orchestrazioni.

Configurazione dell'applicazione BizTalk

Dopo aver distribuito il progetto BizTalk, l'orchestrazione creata in precedenza è elencata nel riquadro Orchestrazioni nella console di amministrazione di BizTalk Server. È necessario usare la console di amministrazione BizTalk Server per configurare l'applicazione. Per una procedura dettagliata, vedere Procedura dettagliata: Distribuzione di un'applicazione BizTalk di base.

La configurazione di un'applicazione comporta:

  • Selezione di un host per l'applicazione.

  • Mapping delle porte create nell'orchestrazione alle porte fisiche nella console di amministrazione di BizTalk Server. Per questa orchestrazione è necessario:

    • Definire un percorso sul disco rigido e una porta file corrispondente in cui verrà visualizzato un messaggio di richiesta. L'orchestrazione BizTalk utilizzerà il messaggio di richiesta e lo invierà al database di SQL Server.

    • Definire un percorso sul disco rigido e una porta file corrispondente in cui l'orchestrazione BizTalk rilascia il messaggio di risposta contenente la risposta dal database di SQL Server.

    • Definire una porta di trasmissione fisica WCF-Custom o WCF-SQL per inviare messaggi al database di SQL Server. Poiché le operazioni che fanno parte dell'operazione composita vengono eseguite in una singola transazione, assicurarsi che la proprietà di associazione UseAmbientTransaction sia impostata su True.

      È anche necessario specificare l'azione nella porta di invio. L'azione per un'operazione composita è "CompositeOperation". Per informazioni su come creare porte, vedere Configurare manualmente un'associazione di porte fisiche all'adapter SQL. Per altre informazioni su come specificare azioni per le porte, vedere Configurare l'azione SOAP per l'adapter SQL.

      Nota

      La generazione dello schema usando il componente aggiuntivo Del progetto BizTalk del servizio adapter crea anche un file di associazione contenente informazioni sulle porte e sulle azioni da impostare per tali porte. È possibile importare questo file di associazione dalla console di amministrazione di BizTalk Server per creare porte di invio (per le chiamate in uscita) o le porte di ricezione (per le chiamate in ingresso). Per altre informazioni, vedere Configurare un'associazione di porte fisiche usando un file di associazione di porte per l'uso dell'adapter SQL. Se si importa questo file di associazione, l'azione sulla porta di trasmissione WCF-Custom o WCF-SQL è impostata su un'azione dinamica che coinvolge tutte le operazioni selezionate nel componente aggiuntivo Consume Adapter Service durante la generazione dello schema. Per un'operazione composita, è necessario sostituire l'azione dinamica con "CompositeOperation".

Avvio dell'applicazione

È necessario avviare l'applicazione BizTalk per eseguire operazioni composte nel database SQL Server. Per istruzioni sull'avvio di un'applicazione BizTalk, vedere Come avviare un'orchestrazione.

In questa fase assicurarsi di:

  • La porta di ricezione FILE per ricevere messaggi di richiesta per l'orchestrazione è in esecuzione.

  • La porta di invio FILE per ricevere i messaggi di risposta dall'orchestrazione è in esecuzione.

  • La porta di trasmissione WCF-Custom o WCF-SQL per inviare messaggi al database SQL Server è in esecuzione.

  • L'orchestrazione BizTalk per l'operazione è in esecuzione.

Esecuzione dell'operazione

Dopo aver eseguito l'applicazione, è necessario eliminare un messaggio di richiesta nel percorso di ricezione FILE. Lo schema per il messaggio di richiesta deve essere conforme allo schema per le operazioni composte create in precedenza. Ad esempio, un messaggio di richiesta che inserisce un record nella tabella EMPLOYEE, richiama la stored procedure GET_LAST_EMP_DATA ed elimina un record dalla tabella EMPLOYEE:

<Request xmlns="http://CompositeTest.CompositeSchema">  
  <Insert xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Employee">  
    <Rows>  
      <Employee xmlns="http://schemas.microsoft.com/Sql/2008/05/Types/Tables/dbo">  
        <Name>John</Name>  
        <Designation>Manager</Designation>  
        <Salary>100000</Salary>  
      </Employee>  
    </Rows>  
  </Insert>  
  <GET_LAST_EMP_DATA xmlns="http://schemas.microsoft.com/Sql/2008/05/Procedures/dbo" />  
  <Delete xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Employee">  
    <Rows>  
      <Employee xmlns="http://schemas.microsoft.com/Sql/2008/05/Types/Tables/dbo">  
        <Name>John</Name>  
      </Employee>  
    </Rows>  
  </Delete>  
</Request>  

Per altre informazioni sullo schema del messaggio di richiesta per l'esecuzione di operazioni composte nel database SQL Server tramite l'adattatore SQL, vedere Schemi di messaggi per operazioni composite.

L'orchestrazione usa il messaggio e lo invia al database di SQL Server. La risposta dal database SQL Server viene salvata nell'altra posizione FILE definita come parte dell'orchestrazione. Ad esempio, la risposta dal database di SQL Server per il messaggio di richiesta precedente è:

<?xml version="1.0" encoding="utf-8" ?>   
<RequestResponse xmlns="http://CompositeTest.CompositeSchema">  
  <InsertResponse xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Employee">  
    <InsertResult>  
      <long xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">10080</long>   
    </InsertResult>  
  </InsertResponse>  
  <GET_LAST_EMP_DATAResponse xmlns="http://schemas.microsoft.com/Sql/2008/05/Procedures/dbo">  
    <GET_LAST_EMP_DATAResult>  
      <DataSet xmlns="http://schemas.datacontract.org/2004/07/System.Data">  
        <xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">  
          <xs:element msdata:IsDataSet="true" name="NewDataSet">  
            <xs:complexType>  
              <xs:sequence>  
                <xs:element minOccurs="0" maxOccurs="unbounded" name="NewTable">  
                  <xs:complexType>  
                    <xs:sequence>  
                      <xs:element minOccurs="0" name="Employee_ID" type="xs:int" />   
                      <xs:element minOccurs="0" name="Name" type="xs:string" />   
                      <xs:element minOccurs="0" name="DOJ" type="xs:dateTime" />   
                      <xs:element minOccurs="0" name="Designation" type="xs:string" />   
                      <xs:element minOccurs="0" name="Job_Description" type="xs:string" />   
                      <xs:element minOccurs="0" name="Photo" type="xs:base64Binary" />   
                      <xs:element minOccurs="0" name="Rating" type="xs:string" />   
                      <xs:element minOccurs="0" name="Salary" type="xs:decimal" />   
                      <xs:element minOccurs="0" name="Last_Modified" type="xs:base64Binary" />   
                    </xs:sequence>  
                  </xs:complexType>  
                </xs:element>  
              </xs:sequence>  
            </xs:complexType>  
          </xs:element>  
        </xs:schema>  
        <diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">  
          <NewDataSet xmlns="">  
            <NewTable>  
              <Employee_ID>10080</Employee_ID>   
              <Name>John</Name>   
              <Designation>Manager</Designation>   
              <Salary>100000.00</Salary>   
              <Last_Modified>AAAAAAAAF40=</Last_Modified>   
            </NewTable>  
          </NewDataSet>  
        </diffgr:diffgram>  
      </DataSet>  
    </GET_LAST_EMP_DATAResult>  
    <ReturnValue>0</ReturnValue>   
  </GET_LAST_EMP_DATAResponse>  
  <DeleteResponse xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Employee">  
    <DeleteResult>1</DeleteResult>   
  </DeleteResponse>  
</RequestResponse>  

La risposta precedente contiene più set di risultati corrispondenti alle diverse operazioni eseguite come parte dell'operazione composita. Ad esempio, l'elemento contiene 10080, ovvero l'identificatore InsertResult univoco per il record appena aggiunto.

Procedure consigliate

Dopo aver distribuito e configurato il progetto BizTalk, è possibile esportare le impostazioni di configurazione in un file XML denominato file di associazione. Dopo aver generato un file di associazione, è possibile importare le impostazioni di configurazione dal file, in modo che non sia necessario creare elementi, ad esempio porte di invio e porte di ricezione per la stessa orchestrazione. Per altre informazioni sui file di associazione, vedere Riutilizzare le associazioni degli adattatori.

Vedere anche

Sviluppare applicazioni BizTalk tramite l'adapter SQL