Condividi tramite


Ricevere messaggi di modifica dei dati basati sul polling da SQL Server tramite BizTalk Server

È possibile configurare l'adapter SQL per ricevere messaggi periodici di modifica dei dati per SQL Server tabelle o viste. È possibile specificare un'istruzione di polling eseguita dall'adattatore per eseguire il polling del database. L'istruzione di polling può essere un'istruzione SELECT o una stored procedure che restituisce un set di risultati.

Per altre informazioni su come l'adattatore supporta il polling, vedere Supporto per il polling. Per informazioni sulla struttura del messaggio SOAP per le operazioni di polling, vedere Schemi messaggio per le operazioni di polling e TypedPolling.

Nota

In questo argomento viene illustrato come utilizzare l'operazione di polling in ingresso per usare i messaggi di polling. Il messaggio per l'operazione di polling non è fortemente tipizzato e lo schema dell'oggetto sottoposto a polling viene recuperato insieme al messaggio in fase di esecuzione. Per ottenere un messaggio di polling fortemente tipizzato, è necessario utilizzare l'operazione TypedPolling . È inoltre necessario utilizzare l'operazione TypedPolling per avere più operazioni di polling in una singola applicazione BizTalk. Per istruzioni su come eseguire l'operazione TypedPolling, vedere Ricevere messaggi di modifica dei dati basati su polling fortemente tipizzato da SQL Server Using BizTalk Server.

Importante

Se si desidera avere più di un'operazione di polling in una singola applicazione BizTalk, è necessario specificare una proprietà di connessione InboundID come parte dell'URI di connessione per renderla univoca. Con un URI di connessione univoco, è possibile creare più porte di ricezione che eseguono il polling dello stesso database o anche la stessa tabella in un database. Per altre informazioni, vedere Ricevere messaggi di polling tra più porte di ricezione da SQL tramite BizTalk Server.

Come illustra il polling in questo argomento

In questo argomento viene illustrato come l'adapter SQL supporta la ricezione di messaggi di modifica dei dati, creare un progetto BizTalk e generare lo schema per l'operazione di polling . Se si desidera specificare le proprietà di associazione correlate al polling in fase di progettazione, specificare polledDataAvailableStatement come:

SELECT COUNT(*) FROM Employee  

PolledDataAvailableStatement deve restituire un set di risultati con la prima cella contenente un valore positivo. Se la prima cella non contiene un valore positivo, l'adapter non esegue l'istruzione di polling.

Come parte dell'istruzione di polling, eseguire le operazioni seguenti:

  • Selezionare tutte le righe dalla tabella Employee.

  • Eseguire una stored procedure (MOVE_EMP_DATA) per spostare tutti i record dalla tabella Employee a una tabella EmployeeHistory.

  • Eseguire una stored procedure (ADD_EMP_DETAILS) per aggiungere un nuovo record alla tabella Employee. Questa procedura accetta il nome, la designazione e lo stipendio dei dipendenti come parametri.

    Per eseguire queste operazioni, è necessario specificare quanto segue per la proprietà di associazione PollingStatement :

SELECT * FROM Employee;EXEC MOVE_EMP_DATA;EXEC ADD_EMP_DETAILS John, Tester, 100000   

Dopo l'esecuzione dell'istruzione di polling, vengono selezionati tutti i record della tabella Employee e il messaggio da SQL Server viene eliminato in un percorso di ricezione. Dopo che la stored procedure MOVE_EMP_DATA viene eseguita dall'adapter, tutti i record vengono spostati nella tabella EmployeeHistory. Viene quindi eseguita la stored procedure ADD_EMP_DETAILS per aggiungere un nuovo record alla tabella Employee. L'esecuzione del polling successiva restituirà solo un singolo record. Questo ciclo continua fino a quando non si disabilita la porta di ricezione che esegue il polling SQL Server.

Configurazione di una query di polling con le proprietà di associazione dell'adapter SQL

Nella tabella seguente vengono riepilogate le proprietà di associazione dell'adapter SQL usate per configurare l'adapter per ricevere messaggi di modifica dei dati. È necessario specificare queste proprietà di associazione durante la configurazione della porta di ricezione nella console di amministrazione di BizTalk Server.

Nota

È possibile scegliere di specificare queste proprietà di associazione durante la generazione dello schema per l'operazione di polling , anche se non è obbligatorio. In tal caso, il file di associazione delle porte generato dal componente aggiuntivo consume adapter service come parte della generazione dei metadati contiene anche i valori specificati per le proprietà di associazione. In seguito è possibile importare questo file di associazione nella console di amministrazione di BizTalk Server per creare la porta di ricezione WCF-custom o WCF-SQL con le proprietà di associazione già impostate. Per altre informazioni sulla creazione di una porta tramite il file di associazione, vedere Configurare un'associazione di porte fisiche usando un file di associazione di porte per l'uso dell'adattatore SQL.

Binding, proprietà Descrizione
InboundOperationType Specifica se si desidera eseguire l'operazione polling, TypedPolling o Notification in ingresso. Il valore predefinito è Polling.
PolledDataAvailableStatement Specifica l'istruzione SQL eseguita dall'adapter per determinare se i dati sono disponibili per il polling. L'istruzione SQL deve restituire un set di risultati costituito da righe e colonne. Solo se è disponibile una riga, verrà eseguita l'istruzione SQL specificata per la proprietà di associazione PollingStatement .
PollingIntervalInSeconds Specifica l'intervallo, espresso in secondi, in cui l'adapter SQL esegue l'istruzione specificata per la proprietà di associazione PolledDataAvailableStatement . Il valore predefinito è 30 secondi. L'intervallo di polling determina l'intervallo di tempo tra i sondaggi successivi. Se l'istruzione viene eseguita entro l'intervallo specificato, l'adapter attende il tempo rimanente nell'intervallo.
PollingStatement Specifica l'istruzione SQL per eseguire il polling della tabella di database SQL Server. È possibile specificare una semplice istruzione SELECT o una stored procedure per l'istruzione di polling. Il valore predefinito è Null. È necessario specificare un valore per PollingStatement per abilitare il polling. L'istruzione di polling viene eseguita solo se sono disponibili dati per il polling, determinato dalla proprietà di associazione PolledDataAvailableStatement . È possibile specificare un numero qualsiasi di istruzioni SQL separate da un punto e virgola.
PollWhileDataFound Specifica se l'adattatore SQL ignora l'intervallo di polling ed esegue continuamente l'istruzione SQL specificata per la proprietà di associazione PolledDataAvailableStatement , se i dati sono disponibili nella tabella di cui viene eseguito il polling. Se nella tabella non sono disponibili dati, l'adapter viene ripristinato per eseguire l'istruzione SQL in corrispondenza dell'intervallo di polling specificato. Il valore predefinito è false.

Per una descrizione più completa di queste proprietà, vedere Informazioni sull'adapter BizTalk per le proprietà di associazione dell'adapter SQL Server. Per una descrizione completa di come usare l'adapter SQL per eseguire il polling di SQL Server, leggere altre informazioni.

Come ricevere messaggi di modifica dei dati dal database SQL Server

L'esecuzione di un'operazione sul database SQL Server tramite l'adattatore SQL con BizTalk Server comporta le attività procedurali descritte in Blocchi predefiniti per sviluppare applicazioni BizTalk con l'adapter SQL. Per configurare l'adattatore per la ricezione di messaggi di modifica dei dati, queste attività sono:

  1. Creare un progetto BizTalk e quindi generare lo schema per l'operazione di polling . Facoltativamente, è possibile specificare i valori per le proprietà di associazione PolledDataAvailableStatement e PollingStatement .

  2. Creare un messaggio nel progetto BizTalk per la ricezione di messaggi dal database SQL Server.

  3. Creare un'orchestrazione per ricevere messaggi dal database SQL Server e salvarli in una cartella.

  4. Compilare e distribuire il progetto BizTalk.

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

    Importante

    Per gli scenari di polling in ingresso è sempre necessario configurare una porta di ricezione unidirezionale WCF-Custom o WCF-SQL. Le porte di ricezione WCF-Custom bidirezionali o WCF-SQL non sono supportate per le operazioni in ingresso.

  6. Avviare l'applicazione BizTalk.

    In questo argomento vengono fornite istruzioni per eseguire queste attività.

Generazione dello schema

È necessario generare lo schema per l'operazione di polling . Per altre informazioni su come generare lo schema, vedere Recupero di metadati per SQL Server operazioni in Visual Studio tramite l'adapter SQL. Eseguire le attività seguenti durante la generazione dello schema. Ignorare il primo passaggio se non si desidera specificare le proprietà di associazione in fase di progettazione.

  1. Specificare un valore per le proprietà di associazione PolledDataAvailableStatement e PollingStatement durante la generazione dello schema. Per altre informazioni su questa proprietà di associazione, vedere Informazioni sull'adapter BizTalk per le proprietà di associazione dell'adapter SQL Server.

    Per istruzioni su come specificare le proprietà di associazione, vedere Configurare le proprietà di associazione per l'adapter SQL.

  2. Selezionare il tipo di contratto come Servizio (operazione in ingresso).Select the contract type as Service (Inbound operation).

  3. Generare lo schema per l'operazione di polling .

Definizione di messaggi e tipi di messaggio

Lo schema generato in precedenza descrive i "tipi" necessari per i messaggi nell'orchestrazione. Un messaggio è in genere una variabile, il tipo per il quale è definito dallo schema corrispondente. Dopo aver generato lo schema, è necessario collegarlo ai messaggi dalla visualizzazione Orchestrazione del progetto BizTalk.

Per questo argomento, è necessario creare un messaggio per ricevere messaggi dal database SQL Server.

Seguire questa procedura per creare messaggi e collegarli allo schema.

  1. Aggiungere un'orchestrazione al progetto BizTalk. Nella 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 della visualizzazione orchestrazione del progetto BizTalk, se non è già aperta. Fare clic su Visualizza, scegliere Altre finestre e quindi fare clic su Visualizzazione orchestrazione.

  3. Nella visualizzazione orchestrazione fare clic con il pulsante destro del mouse su Messaggi, 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 Message_1 eseguire le operazioni seguenti:

    Usare Per
    Identificatore Digitare Ricezione.
    Tipo di messaggio Nell'elenco a discesa espandere Schemi e selezionare PollingQuery.Polling, dove PollingQuery è il nome del progetto BizTalk. Il polling è lo schema generato per l'operazione di polling .

Configurazione dell'orchestrazione

È necessario creare un'orchestrazione BizTalk per usare BizTalk Server per ricevere messaggi di modifica dei dati basati sul polling dal database SQL Server. In questa orchestrazione l'adapter riceve la risposta dell'istruzione select specificata per la proprietà di associazione PollingStatement . La risposta per l'istruzione SELECT viene salvata in un percorso FILE. Un'orchestrazione tipica per il polling di un database SQL Server contiene:

  • Ricevere e inviare forme per ricevere messaggi da SQL Server e inviare rispettivamente a una porta FILE.

  • Porta di ricezione unidirezionale per ricevere messaggi da SQL Server.

    Importante

    Per gli scenari di polling in ingresso è necessario configurare sempre una porta di ricezione unidirezionale. Le porte di ricezione bidirezionale non sono supportate per le operazioni in ingresso.

  • Una porta di invio unidirezionale per inviare risposte di polling da un database SQL Server a una cartella.

    Un'orchestrazione di esempio è simile alla seguente.

    Orchestrazione per il polling di un database SQL Server

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
SaveMessage Send - Impostare nome su SaveMessage

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à
SQLReceivePort - Impostare identificatore su SQLReceivePort

- Impostare tipo su SQLReceivePortType

- Impostare il modello di comunicazionesu unidirezionale

- Impostare la direzione di comunicazione su Ricezione
SaveMessagePort - Impostare identificatore su SaveMessagePort

- Impostare tipo su SaveMessagePortType

- Impostare il modello di comunicazionesu unidirezionale

- Impostare la direzione di comunicazione su Invia

Specificare i messaggi per le forme di azione e connettersi 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 il messaggio su Ricezione

- Impostare l'operazione su SQLReceivePort.Polling.Request
SaveMessage - Impostare il messaggio su Ricezione

- Impostare l'operazione su SaveMessagePort.Polling.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 l'orchestrazione BizTalk rilascia i messaggi dal database SQL Server. Questi messaggi saranno in risposta all'istruzione di polling specificata per la porta di ricezione.

    • Definire una porta di ricezione un WCF-Custom fisico o WCF-SQL unidirezionale. Questa porta esegue il polling del database SQL Server con l'istruzione di polling specificata per la porta. Per informazioni su come creare porte, vedere Configurare manualmente un'associazione di porte fisiche all'adapter SQL. Assicurarsi di specificare le proprietà di associazione seguenti per la porta di ricezione.

      Importante

      Non è necessario eseguire questo passaggio se sono state specificate le proprietà di associazione in fase di progettazione. In tal caso, è possibile creare una porta di ricezione WCF-custom o WCF-SQL, con le proprietà di associazione necessarie impostate, importando il file di associazione creato dal componente aggiuntivo Del servizio adapter di utilizzo. Per altre informazioni, vedere Configurare un'associazione di porte fisiche usando un file di associazione di porte per usare l'adapter SQL.

      Binding, proprietà Valore
      InboundOperationType Assicurarsi di impostare questa opzione su Polling.
      PolledDataAvailableStatement Assicurarsi di specificare un'istruzione SQL. Per questo argomento specificare:

      SELECT COUNT(*) FROM Employee
      PollingStatement Assicurarsi di specificare l'istruzione di polling. Per questo argomento specificare:

      SELECT * FROM Employee;EXEC MOVE_EMP_DATA;EXEC ADD_EMP_DETAILS John, Tester, 100000

      Per altre informazioni sulle diverse proprietà di associazione, vedere Informazioni sull'adapter BizTalk per SQL Server proprietà di associazione dell'adapter.

      Nota

      È consigliabile configurare il livello di isolamento delle transazioni e il timeout della transazione durante l'esecuzione di operazioni in ingresso tramite l'adapter SQL. A tale scopo, è possibile aggiungere il comportamento del servizio durante la configurazione della porta di ricezione WCF-Custom o WCF-SQL. Per istruzioni su come aggiungere il comportamento del servizio, vedere Configurare il livello di isolamento delle transazioni e il timeout delle transazioni con SQL.

Avvio dell'applicazione

È necessario avviare l'applicazione BizTalk per la ricezione di messaggi dal database di SQL Server. Per istruzioni sull'avvio di un'applicazione BizTalk, vedere Come avviare un'orchestrazione.

In questa fase, assicurarsi di:

  • La porta di ricezione unidirezionale WCF-Custom o WCF-SQL, che esegue il polling del database SQL Server utilizzando le istruzioni specificate per la proprietà di associazione PollingStatement, è in esecuzione.

  • La porta di trasmissione FILE, che riceve messaggi da SQL Server, è in esecuzione.

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

Esecuzione dell'operazione

Dopo aver eseguito l'applicazione, nella stessa sequenza vengono eseguite le azioni seguenti:

  • L'adapter esegue polledDataAvailableStatement nella tabella Employee e determina che la tabella contiene record per il polling.

  • L'adapter esegue l'istruzione di polling. Poiché l'istruzione di polling è costituita da un'istruzione SELECT e da stored procedure, l'adapter eseguirà tutte le istruzioni una dopo l'altra.

    • L'adapter esegue innanzitutto l'istruzione SELECT che restituisce tutti i record nella tabella Employee.

    • L'adapter esegue quindi la stored procedure MOVE_EMP_DATA che sposta tutti i dati dalla tabella Employee alla tabella EmployeeHistory. Questa stored procedure non restituisce alcun valore.

    • L'adapter esegue quindi la stored procedure ADD_EMP_DETAILS che aggiunge un record alla tabella Employee. Questa stored procedure restituisce l'ID dipendente per il record inserito.

      Pertanto, il messaggio ricevuto da SQL Server conterrà più set di risultati (per l'istruzione SELECT e per ADD_EMP_DETAILS stored procedure) e sarà simile al seguente:

    <?xml version="1.0" encoding="utf-8" ?>   
    <Polling xmlns="http://schemas.microsoft.com/Sql/2008/05/Polling/">  
      <PolledData>  
        <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>10001</Employee_ID>   
                <Name>John</Name>   
                <Designation>Tester</Designation>   
                <Salary>100000.00</Salary>   
                <Last_Modified>AAAAAAAAF34=</Last_Modified>   
              </NewTable>  
              ........  
              ........  
              <NewTable>  
                <Employee_ID>10005</Employee_ID>   
                <Name>Wilson</Name>   
                <Designation>Tester3</Designation>   
                <Salary>100000.00</Salary>   
                <Last_Modified>AAAAAAAAF4E=</Last_Modified>   
              </NewTable>  
            </NewDataSet>  
          </diffgr:diffgram>  
        </DataSet>  
        <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: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>10006</Employee_ID>  
              </NewTable>  
            </NewDataSet>  
          </diffgr:diffgram>  
        </DataSet>  
      </PolledData>  
    </Polling>  
    

    La risposta precedente contiene due set di dati. Il primo set di dati contiene la risposta per l'istruzione SELECT. L'istruzione SELECT seleziona tutti i record nella tabella Employee. Il secondo set di dati è relativo alla stored procedure ADD_EMP_DETAILS. Questa stored procedure aggiunge un record alla tabella Employee e restituisce l'ID dipendente per il nuovo record.

    Nota

    La stored procedure MOVE_EMP_DATA non restituisce un set di risultati. Non esiste quindi alcun set di dati corrispondente nel messaggio di risposta.

  • Quando l'adattatore esegue di nuovo PollDataAvailableStatement , trova un record inserito dalla stored procedure ADD_EMP_DETAILS. L'adapter esegue quindi tutte e tre le istruzioni specificate per la proprietà di associazione PollingStatement . Questa volta, la risposta da SQL Server contiene un solo record per l'istruzione SELECT e un record per la stored procedure ADD_EMP_DETAILS. Tutti i sondaggi successivi restituiranno risposte simili.

Nota

L'adapter SQL continuerà a eseguire il polling fino a quando non si disabilita in modo esplicito la porta di ricezione dalla console di amministrazione di BizTalk Server.

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 le porte di trasmissione e le porte di ricezione per la stessa orchestrazione. Per altre informazioni sui file di associazione, vedere Riutilizzare le associazioni degli adattatori.

Vedere anche

Eseguire il polling di SQL Server usando l'adapter SQL con BizTalk Server