Recibir mensajes de sondeo mediante instrucciones SELECT con cláusula FOR XML de SQL mediante BizTalk Server
Puede configurar el adaptador de SQL para recibir mensajes periódicos de cambio de datos para SQL Server tablas o vistas mediante instrucciones SELECT o procedimientos almacenados que incluyen una cláusula FOR XML. Puede especificar estas instrucciones como instrucción de sondeo que el adaptador ejecuta para sondear la base de datos. La instrucción de sondeo puede ser una instrucción SELECT o un procedimiento almacenado que devuelve un conjunto de resultados.
Para obtener más información sobre cómo admite el adaptador de sondeo, consulte Compatibilidad con sondeos. Para obtener información sobre la estructura del mensaje SOAP para las operaciones de sondeo, vea Esquemas de mensaje para las operaciones polling y TypedPolling. La cláusula SQL FOR XML proporciona más detalles.
Nota
En este tema se muestra cómo usar la operación de entrada XmlPolling para recibir mensajes de sondeo. La operación XmlPolling se usa para sondear una base de datos de SQL Server mediante instrucciones SELECT o procedimientos almacenados que incluyen una cláusula FOR XML. El mensaje de la operación XmlPolling incluye el mensaje xml recibido ejecutando la instrucción SELECT o el procedimiento almacenado en SQL Server Management Studio.
También puede usar el adaptador para recibir diferentes tipos de mensajes de sondeo.
- Si desea obtener un mensaje de sondeo débilmente tipado, debe usar la operación de sondeo. Para obtener más información, consulte Recepción de mensajes modificados por datos basados en sondeos de SQL Server mediante BizTalk Server.
- Si desea obtener un mensaje de sondeo fuertemente tipado, debe usar la operación TypedPolling . También debe usar la operación TypedPolling para tener varias operaciones de sondeo en una sola aplicación de BizTalk. Para obtener instrucciones sobre cómo realizar la operación TypedPolling, consulte Recepción de mensajes con cambios de datos basados en sondeo fuertemente tipados de SQL Server mediante BizTalk Server.
Importante
Si desea tener más de una operación de sondeo en una sola aplicación de BizTalk, debe especificar una propiedad de conexión InboundID como parte del URI de conexión para que sea único. Con un URI de conexión único, puede crear varios puertos de recepción que sondean la misma base de datos o incluso la misma tabla de una base de datos. Para obtener más información, consulte Recepción de mensajes de sondeo entre varios puertos de recepción de SQL mediante BizTalk Server.
Cómo muestra este tema el sondeo
En este tema, para demostrar cómo el adaptador de SQL admite la recepción de mensajes de cambio de datos, usamos una instrucción SELECT con la cláusula FOR XML para sondear la base de datos de SQL Server. Cuando se invoca esta instrucción en SQL Server Management Studio, la salida tiene el formato de un mensaje xml. Para usar estas instrucciones para sondear una base de datos de SQL Server, debe tener el esquema del mensaje xml de respuesta. El adaptador de SQL requiere que este esquema reciba un mensaje de sondeo después de ejecutar una instrucción SELECT con la cláusula FOR XML. Por lo tanto, para usar una instrucción SELECT con la cláusula FOR XML para sondear la base de datos de SQL Server, debe realizar el siguiente conjunto de tareas.
Genere el esquema para el mensaje de respuesta XML para la instrucción SELECT con la cláusula FOR XML.
Cree un proyecto de BizTalk y agregue el esquema generado al proyecto.
Cree un mensaje en el proyecto de BizTalk para recibir mensajes de respuesta XML de la base de datos SQL Server.
Cree una orquestación para recibir mensajes de la base de datos SQL Server y guardarlos en una carpeta.
Compile e implemente el proyecto de BizTalk.
Configure la aplicación de BizTalk mediante la creación de puertos físicos de envío y recepción.
Importante
Para escenarios de sondeo entrante, siempre debe configurar un puerto de recepción unidireccional WCF-Custom o WCF-SQL. Los puertos de recepción de WCF-Custom bidireccionales o WCF-SQL no se admiten para las operaciones entrantes.
Inicie la aplicación de BizTalk.
Generar esquema para el mensaje de respuesta para la instrucción SELECT
Puede generar el esquema para el mensaje de respuesta para la instrucción SELECT si incluye la xmlschema
cláusula con la for xml
cláusula . En este tema, usamos una instrucción SELECT para recuperar los detalles de los empleados de un identificador de empleado determinado. Para recuperar el esquema mediante la ejecución de una instrucción SELECT, la instrucción SELECT debe escribirse de la siguiente manera:
SELECT Employee_ID ,Name ,Designation FROM Employee for xml auto, xmlschema
Ejecute esta instrucción SELECT para obtener el esquema del mensaje de respuesta. Guarde el esquema. Ahora debe crear un proyecto de BizTalk en Visual Studio y agregar este esquema al proyecto. En este ejemplo, puede asignar un nombre a este esquema como PollingResponse.xsd.
Importante
Asegúrese de quitar la xmlschema
cláusula después de ejecutar la instrucción SELECT para generar el esquema. Si no lo hace, al ejecutar finalmente la instrucción SELECT a través de BizTalk como parte de la operación XmlPolling, volverá a generar el esquema en el mensaje de respuesta. Por lo tanto, para obtener el mensaje de respuesta como xml, debe quitar la xmlschema
cláusula .
Para agregar el esquema a un proyecto de BizTalk
Cree un proyecto de BizTalk en Visual Studio.
Agregue el esquema de respuesta que generó para el procedimiento almacenado al proyecto de BizTalk. Haga clic con el botón derecho en el proyecto de BizTalk en el Explorador de soluciones, seleccione Agregary, a continuación, haga clic en Elemento existente. En el cuadro de diálogo Agregar elemento existente, vaya a la ubicación donde guardó el esquema y haga clic en Agregar.
Abra el esquema en Visual Studio y realice los siguientes cambios.
Agregue un nodo al esquema y mueva el nodo raíz existente en este nodo recién agregado. Asigne un nombre al nodo raíz. En este tema, cambie el nombre del nodo raíz a Raíz.
El esquema de respuesta generado para la instrucción SELECT hace referencia a sqltypes.xsd. Puede obtener el esquema sqltypes.xsd de https://go.microsoft.com/fwlink/?linkid=31850. Agregue el esquema sqltypes.xsd al proyecto de BizTalk. Para obtener más información sobre este esquema, vaya a:
En el esquema generado para la instrucción SELECT, cambie el valor de
import schemaLocation
a lo siguiente.import schemaLocation=”sqltypes.xsd”
Esto se debe a que ya ha agregado el esquema sqltypes.xsd al proyecto de BizTalk.
Proporcione un espacio de nombres de destino para el esquema. Haga clic en el <nodo Esquema> y, en el panel de propiedades, especifique un espacio de nombres en la propiedad Espacio de nombres de destino . Para este tema, asigne el espacio de nombres como
http://ForXmlPolling/namespace
.
Definición de mensajes y tipos de mensajes
El esquema que generó anteriormente describe los "tipos" necesarios para los mensajes de la orquestación. Normalmente, un mensaje es una variable, el tipo para el que se define mediante el esquema correspondiente. Una vez generado el esquema, debe vincularlo a los mensajes de la vista Orquestación del proyecto de BizTalk.
Para este tema, debe crear un mensaje para recibir mensajes de la base de datos SQL Server.
Realice los pasos siguientes para crear mensajes y vincularlos al esquema.
Para crear mensajes y vincular al esquema
Agregue una orquestación al proyecto de BizTalk. En el Explorador de soluciones, haga clic con el botón derecho en el nombre del proyecto de BizTalk, seleccione Agregar y, a continuación, haga clic en Nuevo elemento. Escriba un nombre para la orquestación de BizTalk y, a continuación, haga clic en Agregar.
Abra la ventana de vista de orquestación del proyecto de BizTalk, si aún no está abierta. Haga clic en Ver, seleccione Otras ventanas y, a continuación, haga clic en Vista de orquestación.
En la vista Orquestación, haga clic con el botón derecho en Mensajes y, a continuación, haga clic en Nuevo mensaje.
Haga clic con el botón derecho en el mensaje recién creado y, a continuación, seleccione Ventana Propiedades.
En el panel Propiedades de Message_1, haga lo siguiente:
Use Para hacer esto Identificador Escriba PollingMessage. Tipo de mensaje En la lista desplegable, expanda Esquemas y seleccione ForXMLPolling.PollingResponse, donde ForXMLPolling es el nombre del proyecto de BizTalk. PollingResponse es el nombre del esquema de respuesta generado mediante la ejecución de la instrucción SELECT como se describe en Recepción de mensajes de sondeo mediante instrucciones SELECT con cláusula FOR XML de SQL mediante BizTalk Server.
Configuración de la orquestación
Debe crear una orquestación de BizTalk para usar BizTalk Server para recibir mensajes de cambio de datos basados en sondeos de la base de datos de SQL Server. En esta orquestación, el adaptador recibe la respuesta de la instrucción select especificada para la propiedad de enlace PollingStatement . La respuesta de la instrucción SELECT se guarda en una ubicación FILE. Una orquestación típica para sondear una base de datos de SQL Server contendrá:
Recibir y enviar formas para recibir mensajes de SQL Server y enviar a un puerto FILE, respectivamente.
Un puerto de recepción unidireccional para recibir mensajes de SQL Server.
Importante
Para escenarios de sondeo de entrada, siempre debe configurar un puerto de recepción unidireccional. No se admiten puertos de recepción bidireccionales para las operaciones entrantes.
Un puerto de envío unidireccional para enviar respuestas de sondeo desde una base de datos de SQL Server a una carpeta.
Una orquestación de ejemplo es similar a la siguiente.
Agregar formas de mensaje
Asegúrese de especificar las siguientes propiedades para cada una de las formas de mensaje. Los nombres enumerados en la columna Shape son los nombres de las formas de mensaje que se muestran en la orquestación mencionada.
Forma | Tipo de forma | Propiedades |
---|---|---|
ReceiveMessage | Recepción | - Establecer nombre en ReceiveMessage - Establecer Activar en True |
SaveMessage | Envío | - Establecer nombre en SaveMessage |
Adición de puertos
Asegúrese de especificar las siguientes propiedades para cada uno de los puertos lógicos. Los nombres enumerados en la columna Puerto son los nombres de los puertos como se muestra en la orquestación.
Port | Propiedades |
---|---|
SQLReceivePort | - Establecer identificador en SQLReceivePort - Establecer tipo en SQLReceivePortType - Establecer el patrón de comunicación en unidireccional - Establecer la dirección de comunicación para recibir |
SaveMessagePort | - Establecer identificador en SaveMessagePort - Establecer tipo en SaveMessagePortType - Establecer el patrón de comunicación en unidireccional - Establecer la dirección de comunicación en enviar |
Especificar mensajes para formas de acción y conectarse a puertos
En la tabla siguiente se especifican las propiedades y sus valores que se deben establecer para especificar mensajes para las formas de acción y para vincular los mensajes a los puertos. Los nombres enumerados en la columna Shape son los nombres de las formas de mensaje tal como se muestran en la orquestación mencionada anteriormente.
Forma | Propiedades |
---|---|
ReceiveMessage | - Establecer mensaje en Recibir - Establecer la operación en SQLReceivePort.XmlPolling.Request |
SaveMessage | - Establecer mensaje en Recibir - Establecer operación en SaveMessagePort.XmlPolling.Request |
Después de especificar estas propiedades, se conectan las formas y los puertos del mensaje y se completa la orquestación.
Ahora debe compilar la solución de BizTalk e implementarla en un BizTalk Server. Para obtener más información, vea Compilar y ejecutar orquestaciones.
Configuración de la aplicación de BizTalk
Después de implementar el proyecto de BizTalk, la orquestación que creó anteriormente aparece en el panel Orquestaciones de la consola de administración de BizTalk Server. Debe usar la consola de administración de BizTalk Server para configurar la aplicación. Para ver un tutorial, consulte Tutorial: Implementación de una aplicación básica de BizTalk.
La configuración de una aplicación implica:
Selección de un host para la aplicación.
Asignación de los puertos que creó en la orquestación a puertos físicos en la consola de administración de BizTalk Server. Para esta orquestación debe:
Defina una ubicación en el disco duro y un puerto de archivo correspondiente donde la orquestación de BizTalk quitará los mensajes de la base de datos de SQL Server. Estos mensajes serán en respuesta a la instrucción de sondeo que especifique para el puerto de recepción.
Defina un puerto de recepción unidireccional de WCF-Custom físicos o WCF-SQL. Este puerto sondea la base de datos SQL Server con la instrucción de sondeo que especifique para el puerto. Para obtener información sobre cómo crear puertos, consulte Configuración manual de un enlace de puerto físico al adaptador de SQL. Asegúrese de especificar las siguientes propiedades de enlace para el puerto de recepción.
Importante
No es necesario realizar este paso si especificó las propiedades de enlace en tiempo de diseño. En tal caso, puede crear un puerto de recepción WCF-custom o WCF-SQL, con las propiedades de enlace necesarias establecidas, importando el archivo de enlace creado por el complemento consumir servicio adaptador. Para obtener más información, consulte Configuración de un enlace de puerto físico mediante un archivo de enlace de puertos para usar el adaptador de SQL.
Binding (propiedad) Value InboundOperationType Asegúrese de establecerlo en XmlPolling. PolledDataAvailableStatement Asegúrese de especificar una instrucción SQL. Para este tema, especifique:
SELECT COUNT(*) FROM Employee
PollingStatement Asegúrese de proporcionar la misma instrucción, sin la xmlschema
cláusula , que especificó al generar el esquema como se describe en Recepción de mensajes de sondeo mediante instrucciones SELECT con cláusula FOR XML de SQL mediante BizTalk Server.
SELECT Employee_ID ,Name ,Designation FROM Employee for xml auto
Nota: Tenga en cuenta que la instrucción SELECT no contiene laxmlschema
cláusula .XmlStoredProcedureRootNodeName Especifique el nombre del nodo raíz que agregó al esquema de respuesta que generó para la instrucción SELECT, tal como se describe en Generar esquema para el mensaje de respuesta para la instrucción SELECT. Para este tema, establézcalo en Raíz. XmlStoredProcedureRootNodeNamespace Especifique el espacio de nombres de destino para el esquema de respuesta que generó para la instrucción SELECT, tal y como se describe en Generar esquema para el mensaje de respuesta para la instrucción SELECT. Para este tema, establézcalo en http://ForXmlPolling/namespace
.Para obtener más información sobre las diferentes propiedades de enlace, vea Leer sobre el adaptador de BizTalk para SQL Server propiedades de enlace del adaptador.
Nota
Se recomienda configurar el nivel de aislamiento de transacción y el tiempo de espera de la transacción al realizar operaciones entrantes mediante el adaptador de SQL. Para ello, agregue el comportamiento del servicio al configurar el puerto de recepción de WCF-Custom o WCF-SQL. Para obtener instrucciones sobre cómo agregar el comportamiento del servicio, vea Configurar el nivel de aislamiento de transacción y el tiempo de espera de transacción con SQL.
Iniciar la aplicación
Debe iniciar la aplicación de BizTalk para recibir mensajes de la base de datos SQL Server. Para obtener instrucciones sobre cómo iniciar una aplicación de BizTalk, vea Cómo iniciar una orquestación.
En esta fase, asegúrese de:
El puerto de recepción unidireccional WCF-Custom o WCF-SQL, que sondea la base de datos SQL Server mediante las instrucciones especificadas para la propiedad de enlace PollingStatement, se está ejecutando.
El puerto de envío FILE, que recibe mensajes de SQL Server, se está ejecutando.
La orquestación de BizTalk para la operación se está ejecutando.
Ejecución de la operación
Después de ejecutar la aplicación, se realiza el siguiente conjunto de acciones, en la misma secuencia:
El adaptador ejecuta PolledDataAvailableStatement en la tabla Employee y determina que la tabla tiene registros para sondear.
El adaptador ejecuta la instrucción de sondeo y recibe un mensaje de sondeo de la base de datos de SQL Server. Dado que la instrucción de sondeo consta de una instrucción SELECT con una cláusula FOR XML, el mensaje de sondeo recibido por el adaptador es similar al siguiente:
<?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>
Observe que el mensaje de sondeo se recibe en el mismo esquema que se generó ejecutando la instrucción SELECT con la cláusula xmlschema . Tenga en cuenta también que el nodo raíz y el espacio de nombres son los mismos que especificó como valores para las propiedades de enlace XmlStoredProcedureRootNodeName yXmlStoredProcedureRootNodeNamespace respectivamente.
Nota
El adaptador de SQL seguirá sondeando hasta que deshabilite explícitamente el puerto de recepción desde la consola de administración de BizTalk Server.
Prácticas recomendadas
Después de haber implementado y configurado el proyecto de BizTalk, puede exportar las opciones de configuración a un archivo XML denominado archivo de enlace. Una vez que genere un archivo de enlace, puede importar los valores de configuración del archivo, de modo que no necesite crear los puertos de envío y recibir puertos para la misma orquestación. Para obtener más información sobre los archivos de enlace, consulte Reutilización de enlaces de adaptador.
Consulte también
Sondear SQL Server mediante el adaptador de SQL con BizTalk Server