Recevoir des messages d’interrogation à l’aide d’instructions SELECT avec une clause FOR XML de SQL à 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 à l’aide d’instructions SELECT ou de procédures stockées qui incluent une clause FOR XML. Vous pouvez spécifier ces instructions comme 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. La clause SQL FOR XML fournit plus de détails.
Notes
Cette rubrique montre comment utiliser l’opération entrante XmlPolling pour recevoir des messages d’interrogation. L’opération XmlPolling est utilisée pour interroger une base de données SQL Server à l’aide d’instructions SELECT ou de procédures stockées qui incluent une clause FOR XML. Le message de l’opération XmlPolling inclut le message xml reçu en exécutant l’instruction SELECT ou la procédure stockée dans SQL Server Management Studio.
Vous pouvez également utiliser l’adaptateur pour recevoir différents types de messages d’interrogation.
- Si vous souhaitez obtenir un message d’interrogation faiblement typé, vous devez utiliser l’opération d’interrogation. Pour plus d’informations, consultez Recevoir des messages basés sur l’interrogation modifiés de données à partir de SQL Server à l’aide de BizTalk Server.
- 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 d’interrogation modifiées à partir de SQL Server à l’aide de BizTalk Server.
Important
Si vous souhaitez avoir plusieurs opérations d’interrogation dans une seule application BizTalk, 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, nous utilisons une instruction SELECT avec la clause FOR XML pour interroger la base de données SQL Server. Lorsque vous appelez une telle instruction dans SQL Server Management Studio, la sortie se présente sous la forme d’un message xml. Pour utiliser de telles instructions pour interroger une base de données SQL Server, vous devez disposer du schéma du message xml de réponse. L’adaptateur SQL nécessite ce schéma pour recevoir un message d’interrogation après l’exécution d’une instruction SELECT avec la clause FOR XML. Par conséquent, pour utiliser une instruction SELECT avec la clause FOR XML pour interroger la base de données SQL Server, vous devez effectuer l’ensemble de tâches suivant.
Générez le schéma du message de réponse XML pour l’instruction SELECT avec la clause FOR XML.
Créez un projet BizTalk et ajoutez le schéma généré au projet.
Créez un message dans le projet BizTalk pour recevoir des messages de réponse XML à partir de la base de données SQL Server.
Créez une orchestration pour recevoir des messages de la base de données SQL Server et les enregistrer dans un dossier.
Générez et déployez le projet BizTalk.
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 bidirectionnel WCF-Custom ou WCF-SQL ne sont pas pris en charge pour les opérations entrantes.
Démarrez l’application BizTalk.
Génération du schéma pour l’instruction SELECT message de réponse
Vous pouvez générer le schéma du message de réponse pour l’instruction SELECT en incluant la xmlschema
clause avec la for xml
clause . Dans cette rubrique, nous utilisons une instruction SELECT pour récupérer les détails de l’employé pour un ID d’employé donné. Pour récupérer le schéma en exécutant une instruction SELECT, l’instruction SELECT doit être écrite de la manière suivante :
SELECT Employee_ID ,Name ,Designation FROM Employee for xml auto, xmlschema
Exécutez cette instruction SELECT pour obtenir le schéma du message de réponse. Enregistrez le schéma. Vous devez maintenant créer un projet BizTalk dans Visual Studio et ajouter ce schéma au projet. Pour cet exemple, vous pouvez nommer ce schéma PollingResponse.xsd.
Important
Veillez à supprimer la xmlschema
clause après avoir exécuté l’instruction SELECT pour générer le schéma. Si vous ne parvenez pas à effectuer cette opération, lorsque vous exécutez enfin l’instruction SELECT via BizTalk dans le cadre de l’opération XmlPolling, vous générez à nouveau le schéma dans le message de réponse. Par conséquent, pour obtenir le message de réponse au format xml, vous devez supprimer la xmlschema
clause .
Pour ajouter le schéma à un projet BizTalk
Créez un projet BizTalk dans Visual Studio.
Ajoutez le schéma de réponse que vous avez généré pour la procédure stockée au projet BizTalk. Cliquez avec le bouton droit sur le projet BizTalk dans le Explorateur de solutions, pointez sur Ajouter, puis cliquez sur Élément existant. Dans la boîte de dialogue Ajouter un élément existant, accédez à l’emplacement où vous avez enregistré le schéma, puis cliquez sur Ajouter.
Ouvrez le schéma dans Visual Studio et apportez les modifications suivantes.
Ajoutez un nœud au schéma et déplacez le nœud racine existant sous ce nœud nouvellement ajouté. Donnez un nom au nœud racine. Pour cette rubrique, renommez le nœud racine en Racine.
Le schéma de réponse généré pour l’instruction SELECT fait référence à un sqltypes.xsd. Vous pouvez obtenir le schéma sqltypes.xsd à partir de https://go.microsoft.com/fwlink/?linkid=31850. Ajoutez le schéma sqltypes.xsd au projet BizTalk. Pour plus d’informations sur ce schéma, accédez à :
Dans le schéma généré pour l’instruction SELECT, remplacez la valeur de
import schemaLocation
par ce qui suit.import schemaLocation=”sqltypes.xsd”
Vous le faites, car vous avez déjà ajouté le schéma sqltypes.xsd à votre projet BizTalk.
Fournissez un espace de noms cible pour le schéma. Cliquez sur le <nœud Schéma> et, dans le volet propriétés, spécifiez un espace de noms dans la propriété Espace de noms cible . Pour cette rubrique, attribuez à l’espace de noms .
http://ForXmlPolling/namespace
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.
Pour créer des messages et créer un lien vers le schéma
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.
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.
Dans la vue Orchestration, cliquez avec le bouton droit sur Messages, puis cliquez sur Nouveau message.
Cliquez avec le bouton droit sur le message nouvellement créé, puis sélectionnez Fenêtre Propriétés.
Dans le volet Propriétés de Message_1, procédez comme suit :
Propriété Pour Identificateur Tapez PollingMessage. Type de message Dans la liste déroulante, développez Schémas, puis sélectionnez ForXMLPolling.PollingResponse, où ForXMLPolling est le nom de votre projet BizTalk. PollingResponse est le nom du schéma de réponse généré par l’exécution de l’instruction SELECT comme décrit sous Recevoir des messages d’interrogation à l’aide d’instructions SELECT avec la clause FOR XML de SQL à l’aide de BizTalk Server.
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 à partir d’une base de données SQL Server vers un dossier.
Un exemple d’orchestration ressemble à ce qui suit.
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 la communication sur Réception |
SaveMessagePort | - Définissez Identifier sur SaveMessagePort - Définissez Type sur SaveMessagePortType - Définir le modèle de communication sur Unidirectionnel - Définir le sens de la 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 des 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 affichées dans l’orchestration mentionnée précédemment.
Forme | Propriétés |
---|---|
ReceiveMessage | - Définir le message sur Réception - Définissez Opération sur SQLReceivePort.XmlPolling.Request |
SaveMessage | - Définir le message sur Réception - Définissez Opération sur SaveMessagePort.XmlPolling.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 de la console d’administration BizTalk Server. Vous devez utiliser la console d’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 à des ports physiques dans la console d’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 supprimera 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 de WCF-Custom physique ou WCF-SQL. 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 XmlPolling. PolledDataAvailableStatement Veillez à spécifier une instruction SQL. Pour cette rubrique, spécifiez :
SELECT COUNT(*) FROM Employee
PollingStatement Veillez à fournir la même instruction, sans la clause, que vous avez spécifiée lors de la xmlschema
génération du schéma, comme décrit dans Recevoir des messages d’interrogation à l’aide d’instructions SELECT avec la clause FOR XML de SQL à l’aide de BizTalk Server.
SELECT Employee_ID ,Name ,Designation FROM Employee for xml auto
Note: Notez que l’instruction SELECT ne contient pas laxmlschema
clause .XmlStoredProcedureRootNodeName Spécifiez le nom du nœud racine que vous avez ajouté au schéma de réponse que vous avez généré pour l’instruction SELECT, comme décrit sous Génération du schéma pour l’instruction SELECT. Pour cette rubrique, définissez cette valeur sur Racine. XmlStoredProcedureRootNodeNamespace Spécifiez l’espace de noms cible pour le schéma de réponse que vous avez généré pour l’instruction SELECT, comme décrit sous Génération du schéma pour l’instruction Message de réponse pour SELECT. Pour cette rubrique, définissez cette valeur sur http://ForXmlPolling/namespace
.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. Vous pouvez le faire en ajoutant 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 le délai d’expiration des transactions avec SQL.
Démarrage de l’application
Vous devez démarrer l’application BizTalk pour recevoir des messages 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 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 et reçoit un message d’interrogation de la base de données SQL Server. Étant donné que l’instruction d’interrogation se compose d’une instruction SELECT avec une clause FOR XML, le message d’interrogation reçu par l’adaptateur ressemble à ce qui suit :
<?xml version="1.0" encoding="utf-8" ?> <Root xmlns="http://ForXmlPolling/namespace"> <Employee Employee_ID="10765" Name="John" Designation="Tester" xmlns="" /> <Employee Employee_ID="10766" Name="Sam" Designation="Manager" xmlns="" /> ..... ..... </Root>
Notez que le message d’interrogation est reçu dans le même schéma que celui généré par l’exécution de l’instruction SELECT avec la clause xmlschema . Notez également que le nœud racine et l’espace de noms sont les mêmes que les valeurs que vous avez spécifiées pour les propriétés de liaison XmlStoredProcedureRootNodeName et XmlStoredProcedureRootNodeNamespace , respectivement.
Notes
L’adaptateur SQL continuera à 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