Partager via


Recevoir des messages de modification des données basées sur l’interrogation de SQL Server à l’aide de BizTalk Server

Vous pouvez configurer l’adaptateur SQL pour recevoir des messages de modification de données périodiques pour SQL Server tables ou vues. Vous pouvez spécifier une instruction d’interrogation que l’adaptateur exécute pour interroger la base de données. L’instruction d’interrogation peut être une instruction SELECT ou une procédure stockée qui retourne un jeu de résultats.

Pour plus d’informations sur la façon dont l’adaptateur prend en charge l’interrogation, consultez Prise en charge de l’interrogation. Pour plus d’informations sur la structure du message SOAP pour les opérations d’interrogation, consultez Schémas de message pour les opérations d’interrogation et de typedPolling.

Notes

Cette rubrique montre comment utiliser l’opération d’interrogation entrante pour utiliser des messages d’interrogation. Le message de l’opération d’interrogation n’est pas fortement typé et le schéma de l’objet interrogé est récupéré avec le message au moment de l’exécution. Si vous souhaitez obtenir un message d’interrogation fortement typé, vous devez utiliser l’opération TypedPolling . Vous devez également utiliser l’opération TypedPolling pour avoir plusieurs opérations d’interrogation dans une seule application BizTalk. Pour obtenir des instructions sur l’exécution de l’opération TypedPolling, consultez Recevoir des messages fortement typés basés sur des données modifiées basés sur l’interrogation à partir de SQL Server à l’aide de BizTalk Server.

Important

Si vous souhaitez avoir plusieurs opérations d’interrogation dans une application BizTalk unique, vous devez spécifier une propriété de connexion InboundID dans le cadre de l’URI de connexion pour la rendre unique. Avec un URI de connexion unique, vous pouvez créer plusieurs ports de réception qui interrogent la même base de données, ou même la même table dans une base de données. Pour plus d’informations, consultez Recevoir des messages d’interrogation sur plusieurs ports de réception de SQL à l’aide de BizTalk Server.

Comment cette rubrique illustre l’interrogation

Dans cette rubrique, pour montrer comment l’adaptateur SQL prend en charge la réception de messages de modification de données, créez un projet BizTalk et générez un schéma pour l’opération d’interrogation . Si vous souhaitez spécifier les propriétés de liaison associées à l’interrogation au moment du design, spécifiez polledDataAvailableStatement comme suit :

SELECT COUNT(*) FROM Employee  

PolledDataAvailableStatement doit retourner un jeu de résultats avec la première cellule contenant une valeur positive. Si la première cellule ne contient pas de valeur positive, l’adaptateur n’exécute pas l’instruction d’interrogation.

Dans le cadre de l’instruction d’interrogation, effectuez les opérations suivantes :

  • Sélectionnez toutes les lignes de la table Employee.

  • Exécutez une procédure stockée (MOVE_EMP_DATA) pour déplacer tous les enregistrements de la table Employee vers une table EmployeeHistory.

  • Exécutez une procédure stockée (ADD_EMP_DETAILS) pour ajouter un nouvel enregistrement à la table Employee. Cette procédure prend le nom, la désignation et le salaire de l’employé comme paramètres.

    Pour effectuer ces opérations, vous devez spécifier les éléments suivants pour la propriété de liaison PollingStatement :

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

Une fois l’instruction d’interrogation exécutée, tous les enregistrements de la table Employee sont sélectionnés et le message de SQL Server est déposé à un emplacement de réception. Une fois la procédure stockée MOVE_EMP_DATA exécutée par l’adaptateur, tous les enregistrements sont déplacés vers la table EmployeeHistory. Ensuite, la procédure stockée ADD_EMP_DETAILS est exécutée pour ajouter un nouvel enregistrement à la table Employee. L’exécution de l’interrogation suivante ne retournera qu’un seul enregistrement. Ce cycle se poursuit jusqu’à ce que vous désactiviez le port de réception qui interroge SQL Server.

Configuration d’une requête d’interrogation avec les propriétés de liaison de l’adaptateur SQL

Le tableau suivant récapitule les propriétés de liaison de l’adaptateur SQL que vous utilisez pour configurer l’adaptateur pour recevoir des messages de modification de données. Vous devez spécifier ces propriétés de liaison lors de la configuration du port de réception dans la console d’administration BizTalk Server.

Notes

Vous pouvez choisir de spécifier ces propriétés de liaison lors de la génération du schéma pour l’opération d’interrogation , même si elle n’est pas obligatoire. Si vous procédez ainsi, le fichier de liaison de port généré par le complément Consume Adapter Service dans le cadre de la génération de métadonnées contient également les valeurs que vous spécifiez pour les propriétés de liaison. Vous pouvez importer ultérieurement ce fichier de liaison dans la console d’administration BizTalk Server pour créer le port de réception WCF-custom ou WCF-SQL avec les propriétés de liaison déjà définies. Pour plus d’informations sur la création d’un port à l’aide du fichier de liaison, consultez Configurer une liaison de port physique à l’aide d’un fichier de liaison de port pour utiliser l’adaptateur SQL.

Binding, propriété Description
InboundOperationType Spécifie si vous souhaitez effectuer l’opération d’interrogation, de typedPolling ou de notification entrante. La valeur par défaut est Interrogation.
PolledDataAvailableStatement Spécifie l’instruction SQL que l’adaptateur exécute pour déterminer si des données sont disponibles pour l’interrogation. L’instruction SQL doit retourner un jeu de résultats composé de lignes et de colonnes. Uniquement si une ligne est disponible, l’instruction SQL spécifiée pour la propriété de liaison PollingStatement est exécutée.
PollingIntervalInSeconds Spécifie l’intervalle, en secondes, auquel l’adaptateur SQL exécute l’instruction spécifiée pour la propriété de liaison PolledDataAvailableStatement . La valeur par défaut est 30 secondes. L’intervalle d’interrogation détermine l’intervalle de temps entre les sondages successifs. Si l’instruction est exécutée dans l’intervalle spécifié, l’adaptateur attend le temps restant dans l’intervalle.
PollingStatement Spécifie l’instruction SQL pour interroger la table de base de données SQL Server. Vous pouvez spécifier une instruction SELECT simple ou une procédure stockée pour l’instruction d’interrogation. La valeur par défaut est null. Vous devez spécifier une valeur pour PollingStatement afin d’activer l’interrogation. L’instruction d’interrogation est exécutée uniquement si des données sont disponibles pour l’interrogation, ce qui est déterminé par la propriété de liaison PolledDataAvailableStatement . Vous pouvez spécifier n’importe quel nombre d’instructions SQL séparées par un point-virgule.
PollWhileDataFound Spécifie si l’adaptateur SQL ignore l’intervalle d’interrogation et exécute en continu l’instruction SQL spécifiée pour la propriété de liaison PolledDataAvailableStatement , si des données sont disponibles dans la table interrogée. Si aucune donnée n’est disponible dans la table, l’adaptateur rétablit pour exécuter l’instruction SQL à l’intervalle d’interrogation spécifié. La valeur par défaut est false.

Pour obtenir une description plus complète de ces propriétés, consultez En savoir plus sur l’adaptateur BizTalk pour SQL Server propriétés de liaison de l’adaptateur. Pour obtenir une description complète de l’utilisation de l’adaptateur SQL pour interroger SQL Server, lisez plus loin.

Comment recevoir des messages de modification de données de la base de données SQL Server

L’exécution d’une opération sur la base de données SQL Server à l’aide de l’adaptateur SQL avec BizTalk Server implique les tâches procédurales décrites dans Blocs de construction pour développer des applications BizTalk avec l’adaptateur SQL. Pour configurer l’adaptateur afin qu’il reçoive des messages de modification des données, les tâches suivantes sont les suivantes :

  1. Créez un projet BizTalk, puis générez le schéma pour l’opération d’interrogation . Si vous le souhaitez, vous pouvez spécifier des valeurs pour les propriétés de liaison PolledDataAvailableStatement et PollingStatement .

  2. Créez un message dans le projet BizTalk pour recevoir des messages de la base de données SQL Server.

  3. Créez une orchestration pour recevoir des messages de la base de données SQL Server et les enregistrer dans un dossier.

  4. Générez et déployez le projet BizTalk.

  5. Configurez l’application BizTalk en créant des ports d’envoi et de réception physiques.

    Important

    Pour les scénarios d’interrogation entrante, vous devez toujours configurer un port de réception WCF-Custom ou WCF-SQL unidirectionnel. Les ports de réception WCF-Custom bidirectionnel ou WCF-SQL ne sont pas pris en charge pour les opérations entrantes.

  6. Démarrez l’application BizTalk.

    Cette rubrique fournit des instructions pour effectuer ces tâches.

Génération du schéma

Vous devez générer le schéma pour l’opération d’interrogation . Pour plus d’informations sur la génération du schéma, consultez Récupération de métadonnées pour les opérations SQL Server dans Visual Studio à l’aide de l’adaptateur SQL. Effectuez les tâches suivantes lors de la génération du schéma. Ignorez la première étape si vous ne souhaitez pas spécifier les propriétés de liaison au moment du design.

  1. Spécifiez une valeur pour les propriétés de liaison PolledDataAvailableStatement et PollingStatement lors de la génération du schéma. Pour plus d’informations sur cette propriété de liaison, consultez En savoir plus sur l’adaptateur BizTalk pour SQL Server propriétés de liaison de l’adaptateur.

    Pour obtenir des instructions sur la spécification des propriétés de liaison, consultez Configurer les propriétés de liaison pour l’adaptateur SQL.

  2. Sélectionnez le type de contrat Service (opération entrante).

  3. Générez le schéma pour l’opération d’interrogation .

Définition des messages et des types de messages

Le schéma que vous avez généré précédemment décrit les « types » requis pour les messages dans l’orchestration. Un message est généralement une variable, dont le type est défini par le schéma correspondant. Une fois le schéma généré, vous devez le lier aux messages de la vue Orchestration du projet BizTalk.

Pour cette rubrique, vous devez créer un message pour recevoir des messages de la base de données SQL Server.

Effectuez les étapes suivantes pour créer des messages et les lier au schéma.

  1. Ajoutez une orchestration au projet BizTalk. Dans le Explorateur de solutions, cliquez avec le bouton droit sur le nom du projet BizTalk, pointez sur Ajouter, puis cliquez sur Nouvel élément. Tapez un nom pour l’orchestration BizTalk, puis cliquez sur Ajouter.

  2. Ouvrez la fenêtre d’affichage d’orchestration du projet BizTalk, s’il n’est pas déjà ouvert. Cliquez sur Affichage, pointez sur Autres fenêtres, puis cliquez sur Vue d’orchestration.

  3. Dans la vue Orchestration, cliquez avec le bouton droit sur Messages, puis cliquez sur Nouveau message.

  4. Cliquez avec le bouton droit sur le message nouvellement créé, puis sélectionnez Fenêtre Propriétés.

  5. Dans le volet Propriétés de Message_1, procédez comme suit :

    Propriété Pour
    Identificateur Tapez Receive.
    Type de message Dans la liste déroulante, développez Schémas, puis sélectionnez PollingQuery.Polling, où PollingQuery est le nom de votre projet BizTalk. L’interrogation est le schéma généré pour l’opération d’interrogation .

Configuration de l’orchestration

Vous devez créer une orchestration BizTalk pour utiliser BizTalk Server pour recevoir des messages de modification de données basés sur l’interrogation à partir de la base de données SQL Server. Dans cette orchestration, l’adaptateur reçoit la réponse de l’instruction select spécifiée pour la propriété de liaison PollingStatement . La réponse de l’instruction SELECT est enregistrée dans un emplacement FILE. Une orchestration classique pour l’interrogation d’une base de données SQL Server contient :

  • Recevoir et envoyer des formes pour recevoir des messages de SQL Server et envoyer à un port FILE, respectivement.

  • Port de réception unidirectionnel pour recevoir des messages de SQL Server.

    Important

    Pour les scénarios d’interrogation entrante, vous devez toujours configurer un port de réception unidirectionnel. Les ports de réception bidirectionnel ne sont pas pris en charge pour les opérations entrantes.

  • Port d’envoi unidirectionnel pour envoyer des réponses d’interrogation d’une base de données SQL Server à un dossier.

    Un exemple d’orchestration ressemble à ce qui suit.

    Orchestration pour l’interrogation d’une base de données SQL Server

Ajout de formes de message

Veillez à spécifier les propriétés suivantes pour chacune des formes de message. Les noms répertoriés dans la colonne Forme sont les noms des formes de message affichées dans l’orchestration qui vient d’être mentionnée.

Forme Type de forme Propriétés
ReceiveMessage Recevoir - Définissez Nom sur ReceiveMessage

- Définissez Activer sur True
SaveMessage Envoyer - Définissez Nom sur SaveMessage

Ajout de ports

Veillez à spécifier les propriétés suivantes pour chacun des ports logiques. Les noms répertoriés dans la colonne Port sont les noms des ports affichés dans l’orchestration.

Port Propriétés
SQLReceivePort - Définissez Identificateur sur SQLReceivePort

- Définissez Type sur SQLReceivePortType

- Définir le modèle de communication sur Unidirectionnel

- Définir le sens de communication sur réception
SaveMessagePort - Définissez Identificateur sur SaveMessagePort

- Définissez Type sur SaveMessagePortType

- Définir le modèle de communication sur Unidirectionnel

- Définir le sens de communication sur Envoyer

Spécifier des messages pour les formes d’action et se connecter aux ports

Le tableau suivant spécifie les propriétés et leurs valeurs que vous devez définir pour spécifier les messages pour les formes d’action et lier les messages aux ports. Les noms répertoriés dans la colonne Forme sont les noms des formes de message, comme indiqué dans l’orchestration mentionnée précédemment.

Forme Propriétés
ReceiveMessage - Définir message sur Réception

- Définissez Opération sur SQLReceivePort.Polling.Request
SaveMessage - Définir message sur Réception

- Définissez Opération sur SaveMessagePort.Polling.Request

Une fois que vous avez spécifié ces propriétés, les formes et les ports de message sont connectés et votre orchestration est terminée.

Vous devez maintenant générer la solution BizTalk et la déployer sur un BizTalk Server. Pour plus d’informations, consultez Génération et exécution d’orchestrations.

Configuration de l’application BizTalk

Une fois que vous avez déployé le projet BizTalk, l’orchestration que vous avez créée précédemment est répertoriée sous le volet Orchestrations dans la console Administration BizTalk Server. Vous devez utiliser la console Administration BizTalk Server pour configurer l’application. Pour obtenir une procédure pas à pas, consultez Procédure pas à pas : déploiement d’une application BizTalk de base.

La configuration d’une application implique :

  • Sélection d’un hôte pour l’application.

  • Mappage des ports que vous avez créés dans votre orchestration aux ports physiques dans la console Administration BizTalk Server. Pour cette orchestration, vous devez :

    • Définissez un emplacement sur le disque dur et un port de fichier correspondant où l’orchestration BizTalk supprime les messages de la base de données SQL Server. Ces messages seront en réponse à l’instruction d’interrogation que vous spécifiez pour le port de réception.

    • Définissez un port de réception unidirectionnel WCF-Custom ou WCF-SQL physique. Ce port interroge la base de données SQL Server avec l’instruction d’interrogation que vous spécifiez pour le port. Pour plus d’informations sur la création de ports, consultez Configurer manuellement une liaison de port physique à l’adaptateur SQL. Veillez à spécifier les propriétés de liaison suivantes pour le port de réception.

      Important

      Vous n’avez pas besoin d’effectuer cette étape si vous avez spécifié les propriétés de liaison au moment du design. Dans ce cas, vous pouvez créer un port de réception WCF-custom ou WCF-SQL, avec les propriétés de liaison requises définies, en important le fichier de liaison créé par le complément Consume Adapter Service. Pour plus d’informations, consultez Configurer une liaison de port physique à l’aide d’un fichier de liaison de port pour utiliser l’adaptateur SQL.

      Binding, propriété Valeur
      InboundOperationType Veillez à définir cette valeur sur Interrogation.
      PolledDataAvailableStatement Veillez à spécifier une instruction SQL. Pour cette rubrique, spécifiez :

      SELECT COUNT(*) FROM Employee
      PollingStatement Veillez à spécifier l’instruction d’interrogation. Pour cette rubrique, spécifiez :

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

      Pour plus d’informations sur les différentes propriétés de liaison, consultez En savoir plus sur l’adaptateur BizTalk pour SQL Server propriétés de liaison de l’adaptateur.

      Notes

      Nous vous recommandons de configurer le niveau d’isolation des transactions et le délai d’expiration de la transaction lors de l’exécution d’opérations entrantes à l’aide de l’adaptateur SQL. Pour ce faire, ajoutez le comportement du service lors de la configuration du port de réception WCF-Custom ou WCF-SQL. Pour obtenir des instructions sur l’ajout du comportement du service, consultez Configurer le niveau d’isolation des transactions et Délai d’expiration des transactions avec SQL.

Démarrage de l’application

Vous devez démarrer l’application BizTalk pour recevoir des messages à partir de la base de données SQL Server. Pour obtenir des instructions sur le démarrage d’une application BizTalk, consultez Guide pratique pour démarrer une orchestration.

À ce stade, assurez-vous que :

  • Le port de réception unidirectionnel WCF-Custom ou WCF-SQL, qui interroge la base de données SQL Server à l’aide des instructions spécifiées pour la propriété de liaison PollingStatement, est en cours d’exécution.

  • Le port d’envoi FILE, qui reçoit les messages de SQL Server, est en cours d’exécution.

  • L’orchestration BizTalk pour l’opération est en cours d’exécution.

Exécution de l’opération

Après avoir exécuté l’application, l’ensemble d’actions suivant se produit, dans la même séquence :

  • L’adaptateur exécute l’instruction PolledDataAvailableStatement sur la table Employee et détermine que la table contient des enregistrements pour l’interrogation.

  • L’adaptateur exécute l’instruction d’interrogation. Étant donné que l’instruction d’interrogation se compose d’une instruction SELECT et de procédures stockées, l’adaptateur exécute toutes les instructions l’une après l’autre.

    • L’adaptateur exécute d’abord l’instruction SELECT qui retourne tous les enregistrements de la table Employee.

    • L’adaptateur exécute ensuite la procédure stockée MOVE_EMP_DATA qui déplace toutes les données de la table Employee vers la table EmployeeHistory. Cette procédure stockée ne retourne aucune valeur.

    • L’adaptateur exécute ensuite la procédure stockée ADD_EMP_DETAILS qui ajoute un enregistrement à la table Employee. Cette procédure stockée retourne l’ID d’employé de l’enregistrement inséré.

      Par conséquent, le message reçu de SQL Server contiendra plusieurs jeux de résultats (pour l’instruction SELECT et pour ADD_EMP_DETAILS procédure stockée) et ressemblera à ce qui suit :

    <?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 réponse précédente contient deux jeux de données. Le premier jeu de données contient la réponse pour l’instruction SELECT. L’instruction SELECT sélectionne tous les enregistrements de la table Employee. Le deuxième jeu de données concerne la procédure stockée ADD_EMP_DETAILS. Cette procédure stockée ajoute un enregistrement à la table Employee et retourne l’ID d’employé pour le nouvel enregistrement.

    Notes

    La procédure stockée MOVE_EMP_DATA ne retourne pas de jeu de résultats. Par conséquent, il n’y a pas de jeu de données correspondant dans le message de réponse.

  • Lorsque l’adaptateur exécute à nouveau PollDataAvailableStatement , il trouve un enregistrement qui a été inséré par la procédure stockée ADD_EMP_DETAILS. L’adaptateur exécute ensuite les trois instructions spécifiées pour la propriété de liaison PollingStatement . Cette fois, la réponse de SQL Server contient un seul enregistrement pour l’instruction SELECT et un enregistrement pour la procédure stockée ADD_EMP_DETAILS. Tous les sondages suivants retournent des réponses similaires.

Notes

L’adaptateur SQL continue d’interroger jusqu’à ce que vous désactiviez explicitement le port de réception à partir de la console d’administration BizTalk Server.

Bonnes pratiques

Une fois que vous avez déployé et configuré le projet BizTalk, vous pouvez exporter les paramètres de configuration vers un fichier XML appelé fichier de liaison. Une fois que vous avez généré un fichier de liaison, vous pouvez importer les paramètres de configuration à partir du fichier, de sorte que vous n’avez pas besoin de créer les ports d’envoi et de réception pour la même orchestration. Pour plus d’informations sur les fichiers de liaison, consultez Réutiliser les liaisons d’adaptateur.

Voir aussi

Interroger SQL Server à l’aide de l’adaptateur SQL avec BizTalk Server