Recibir mensajes con cambios de datos basados en sondeo fuertemente tipados de SQL Server mediante BizTalk Server
Puede configurar el adaptador de SQL para recibir mensajes de sondeo fuertemente tipados de SQL Server. Puede especificar una 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.
Debe usar sondeo fuertemente tipado en un escenario en el que quiera asignar los elementos del mensaje de sondeo a cualquier otro esquema. El esquema al que desea asignar podría ser para otra operación en SQL Server. Por ejemplo, podría asignar determinados elementos del mensaje de sondeo al esquema de una operación De inserción en otra tabla. Por lo tanto, los valores del mensaje de sondeo sirven como parámetros para la operación Insertar. En un escenario más sencillo, podría asignar el esquema para un mensaje de sondeo fuertemente tipado a un archivo de esquema que simplemente almacena información.
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, vea Recibir mensajes de sondeo en varios puertos de recepción de SQL mediante Biztalk Server.
Para obtener más información sobre cómo el adaptador admite sondeos fuertemente tipados, consulte Compatibilidad con sondeo. Para obtener más información sobre el esquema de mensajes para sondeos fuertemente tipados, vea Esquemas de mensajes para las operaciones polling y TypedPolling.
Cómo se muestra en este tema el sondeo fuertemente tipado
En este tema se muestra cómo usar sondeos fuertemente tipados para asignar el mensaje de sondeo a otro esquema. En este tema se muestra cómo crear un proyecto de BizTalk y generar esquema para la operación TypedPolling . Antes de generar el esquema para la operación TypedPolling , debe hacer lo siguiente:
Debe especificar un InboundID como parte del URI de conexión.
Debe especificar una instrucción de sondeo para la propiedad de enlace PollingStatement .
Como parte de la instrucción de sondeo, realice las siguientes operaciones:
Seleccione todas las filas de la tabla Employee.
Ejecute un procedimiento almacenado (MOVE_EMP_DATA) para mover todos los registros de la tabla Employee a una tabla EmployeeHistory.
Ejecute un procedimiento almacenado (ADD_EMP_DETAILS) para agregar un nuevo registro a la tabla Employee. Este procedimiento toma el nombre, la designación y el salario del empleado como parámetros.
Para realizar estas operaciones, debe especificar lo siguiente para la propiedad de enlace PollingStatement :
SELECT * FROM Employee;EXEC MOVE_EMP_DATA;EXEC ADD_EMP_DETAILS John, Tester, 100000
Dado que se genera el esquema para la operación TypedPolling , el esquema está fuertemente tipado y contiene todos los elementos que se incluirán en el mensaje de sondeo.
Como parte del mismo proyecto de BizTalk, se agrega otro archivo de esquema, por ejemplo EmployeeDetails.xsd. El esquema de EmployeeDetails.xsd es similar al siguiente:
<?xml version="1.0" encoding="utf-16" ?>
<xs:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns="http://Typed_Polling.EmployeeDetails" elementFormDefault="qualified" targetNamespace="http://Typed_Polling.EmployeeDetails" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="EmployeeDetails">
<xs:complexType>
<xs:sequence>
<xs:element name="Employee_Info" type="xs:string" />
<xs:element name="Employee_Profile" type="xs:string" />
<xs:element name="Employee_Performance" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
También se agrega un asignador de BizTalk al proyecto para asignar los elementos de la tabla Employee (recibido como mensaje de sondeo) a los elementos del esquema EmployeeDetails.xsd. Como parte del mapa, se combinan uno o varios elementos del mensaje de sondeo y se asignan a un único elemento en el esquema EmployeeDetails. Puede hacerlo mediante el functoid Concatenar cadena.
Por último, como parte del proyecto de BizTalk, se quita un archivo que se ajusta al esquema EmployeeDetails.xsd en un puerto de envío FILE.
Configurar sondeo con tipo con las propiedades de enlace del adaptador de SQL
En la tabla siguiente se resumen las propiedades de enlace del adaptador de SQL que se usan para configurar el adaptador para recibir mensajes de cambio de datos. Aparte de la propiedad de enlace PollingStatement, todas las demás propiedades de enlace enumeradas en esta sección son necesarias al configurar el puerto de recepción en la consola de administración de BizTalk Server. Debe especificar la propiedad de enlace PollingStatement antes de generar el esquema para la operación TypedPolling .
Nota
Para el sondeo con tipo, debe especificar la propiedad de puja PollingStatement al generar el esquema. También puede especificar las demás propiedades de enlace al generar el esquema, aunque no sean obligatorias. Si especifica las propiedades de enlace, el archivo de enlace de puerto que genera el Complemento de servicio de adaptador de consumo como parte de la generación de metadatos también contiene los valores especificados para las propiedades de enlace. Posteriormente, puede importar este archivo de enlace en la consola de administración de BizTalk Server para crear el puerto de recepción WCF-custom o WCF-SQL con las propiedades de enlace ya establecidas. Para obtener más información sobre cómo crear un puerto mediante el archivo de enlace, 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) | Descripción |
---|---|
InboundOperationType | Especifica si desea realizar la operación de entrada Polling, TypedPolling o Notification . El valor predeterminado es Sondeo. Para recibir mensajes de sondeo fuertemente tipados, establezca este valor en TypedPolling. |
PolledDataAvailableStatement | Especifica la instrucción SQL que ejecuta el adaptador para determinar si hay datos disponibles para el sondeo. La instrucción SQL debe devolver un conjunto de resultados que consta de filas y columnas. Solo si hay una fila disponible, se ejecutará la instrucción SQL especificada para la propiedad de enlace PollingStatement . |
PollingIntervalInSeconds | Especifica el intervalo, en segundos, en el que el adaptador de SQL ejecuta la instrucción especificada para la propiedad de enlace PolledDataAvailableStatement . El valor predeterminado es 30 segundos. El intervalo de sondeo determina el intervalo de tiempo entre sondeos sucesivos. Si la instrucción se ejecuta dentro del intervalo especificado, el adaptador espera el tiempo restante en el intervalo. |
PollingStatement | Especifica la instrucción SQL que se va a sondear la tabla de base de datos SQL Server. Puede especificar una instrucción SELECT simple o un procedimiento almacenado para la instrucción de sondeo. El valor predeterminado es null. Debe especificar un valor para PollingStatement para habilitar el sondeo. La instrucción de sondeo solo se ejecuta si hay datos disponibles para el sondeo, que viene determinado por la propiedad de enlace PolledDataAvailableStatement . Puede especificar cualquier número de instrucciones SQL separadas por punto y coma. Importante: Para TypedPolling, debe especificar esta propiedad de enlace antes de generar metadatos. |
PollWhileDataFound | Especifica si el adaptador de SQL omite el intervalo de sondeo y ejecuta continuamente la instrucción SQL especificada para la propiedad de enlace PolledDataAvailableStatement , si los datos están disponibles en la tabla que se está sondeando. Si no hay datos disponibles en la tabla, el adaptador revierte para ejecutar la instrucción SQL en el intervalo de sondeo especificado. El valor predeterminado es false. |
Para obtener una descripción más completa de estas propiedades, vea Leer sobre el adaptador de BizTalk para SQL Server propiedades de enlace del adaptador. Para obtener una descripción completa de cómo usar el adaptador de SQL para sondear SQL Server, lea más.
Cómo recibir mensajes de cambio de datos fuertemente tipados de la base de datos de SQL Server
Realizar una operación en la base de datos SQL Server mediante el adaptador de SQL con BizTalk Server implica las tareas de procedimientos descritas en Bloques de creación para desarrollar aplicaciones de BizTalk con el adaptador de SQL. Para configurar el adaptador para recibir mensajes de cambio de datos fuertemente tipados, estas tareas son:
Cree un proyecto de BizTalk y, a continuación, genere el esquema para la operación TypedPolling . Debe especificar la propiedad de conexión InboundID y la propiedad de enlace PollingStatement al generar el esquema. Por ejemplo, un URI de conexión con el identificador de entrada especificado es similar al siguiente:
mssql://mysqlserver//mysqldatabase?InboundID=mydatabaseId
Cree un mensaje en el proyecto de BizTalk para recibir mensajes de la base de datos de SQL Server.
Cree una orquestación para recibir mensajes de la base de datos SQL Server y guardarlos en una carpeta.
Agregue un esquema, por ejemplo, EmployeeDetails.xsd, en el proyecto de BizTalk.
Agregue un asignador de BizTalk para asignar el esquema del mensaje de sondeo al esquema EmployeeDetails.xsd.
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.
En este tema se proporcionan instrucciones para realizar estas tareas.
Ejemplo basado en este tema
Se proporciona un ejemplo de TypedPolling basado en este tema con el paquete de adaptadores de BizTalk. Para obtener más información, vea Ejemplos para el adaptador de SQL.
Generar esquema
Debe generar el esquema para la operación TypedPolling . Consulte Recuperación de metadatos para operaciones de SQL Server en Visual Studio mediante el adaptador de SQL para obtener más información sobre cómo generar el esquema. Realice las tareas siguientes al generar el esquema.
Especifique la propiedad de conexión InboundID al especificar el URI de conexión. Para este tema, puede especificar inboundID como Employee. Para obtener más información sobre el URI de conexión, consulte Creación del URI de conexión de SQL Server.
Especifique un valor para la propiedad de enlace PollingStatement . Para obtener más información sobre esta propiedad de enlace, vea Leer sobre el adaptador de BizTalk para SQL Server propiedades de enlace del adaptador.
Para obtener instrucciones sobre cómo especificar propiedades de enlace, consulte Configuración de las propiedades de enlace para el adaptador de SQL.
Seleccione el tipo de contrato como Servicio (operación de entrada).
Genere el esquema para la operación TypedPolling .
Definir 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 de SQL Server.
Realice los pasos siguientes para crear mensajes y vincularlos al esquema.
Creación de mensajes y vínculo 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 Typed_Polling.TypedPolling_Employee.TypedPolling, donde Typed_Polling es el nombre del proyecto de BizTalk. TypedPolling_Employee es el esquema generado para la operación TypedPolling .
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 el mensaje de sondeo de la instrucción de sondeo especificada. A continuación, el asignador de BizTalk asigna el esquema de mensajes de sondeo al esquema EmployeeDetails.xsd. A continuación, el mensaje asignado se guarda en una ubicación FILE. Una orquestación típica para recibir mensajes de sondeo fuertemente tipados de 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.
Asignador de BizTalk para asignar el esquema del mensaje de sondeo a cualquier otro esquema.
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 |
Agregar 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 |
Escribir 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 PollingMessage Establezca Operation en SQLReceivePort.TypedPolling.Request. |
SaveMessage | Establecer mensaje en PollingMessage Establezca Operation en SaveMessagePort.TypedPolling.Request |
Después de especificar estas propiedades, se conectan las formas y los puertos del mensaje.
Agregar un asignador de BizTalk
Debe agregar un asignador de BizTalk a la orquestación para asignar el esquema de mensajes de sondeo al esquema EmployeeDetails.xsd. En la consola de administración de BizTalk Server, usará este asignador para asignar el esquema del mensaje de sondeo al esquema EmployeeDetails.xsd.
Agregue un asignador de BizTalk al proyecto de BizTalk. Haga clic con el botón derecho en el proyecto de BizTalk, seleccione Agregar y haga clic en Nuevo elemento.
En el cuadro de diálogo Agregar nuevo elemento , en el panel izquierdo, seleccione Archivos de mapa. En el panel derecho, seleccione Asignar. Especifique un nombre para el mapa, como
MapSchema.btm
. Haga clic en Agregar.En el panel Esquema de origen, haga clic en Esquema de código abierto.
En el cuadro de diálogo Selector de tipos de BizTalk , expanda el nombre del proyecto, expanda Esquemas y seleccione el esquema para el mensaje de sondeo. En este tema, seleccione Typed_Polling.TypedPolling_Employee. Haga clic en OK.
En el cuadro de diálogo Nodo raíz del esquema de origen, seleccione TypedPolling y haga clic en Aceptar.
En el panel Esquema de destino, haga clic en Abrir esquema de destino.
En el cuadro de diálogo Selector de tipos de BizTalk , expanda el nombre del proyecto, expanda Esquemas y seleccione el esquema para EmployeeDetails. En este tema, seleccione Typed_Polling.EmployeeDetails. Haga clic en OK.
En el esquema de origen del mensaje de sondeo, expanda el nodo TypedPollingResultSet0 y los nodos posteriores para ver los elementos que se devuelven en el mensaje de sondeo. En el esquema de destino, expanda el nodo EmployeeDetails para ver los distintos elementos del esquema. Para este tema, debe asignar los esquemas de tal manera que:
Employee_ID y Name en el esquema de origen deben asignarse a Employee_Info en el esquema de destino.
La designación y Job_Description del esquema de origen deben asignarse a Employee_Profile en el esquema de destino.
La clasificación y el salario en el esquema de origen deben asignarse a Employee_Performance en el esquema de destino.
Para combinar más de un nodo en el esquema de origen y asignarlos a un solo nodo en el esquema de destino, debe usar el functoid Concatenate de cadena. Detalles en la guía de la interfaz de usuario y la referencia del espacio de nombres de la API para desarrolladores.
Para usar el functoid Concatenar cadena:
En el Cuadro de herramientas, arrastre el functoid Concatenar cadena y colóquelo en la cuadrícula del asignador.
Conecte los elementos Employee_ID y Name del esquema de origen al functoid.
Conecte el functoid al elemento Employee_Info en el esquema de destino.
Repita estos pasos para todos los elementos que desea asignar. Un mapa terminado será similar al siguiente:
Guarde la asignación.
La orquestación se completa después de crear el asignador. 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.
Configurar 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 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
Asegúrese de especificar inboundID como parte del URI de conexión. El identificador de entrada debe ser el mismo que especificó al generar el esquema.
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 TypedPolling. PolledDataAvailableStatement Asegúrese de especificar la misma instrucción SQL que especificó al generar el esquema, que es:
SELECT COUNT(*) FROM Employee
PollingStatement Asegúrese de proporcionar la misma instrucción de sondeo que especificó al generar el esquema, que es:
SELECT * FROM Employee;EXEC MOVE_EMP_DATA;EXEC ADD_EMP_DETAILS John, Tester, 100000
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.
Defina un puerto de envío DE ARCHIVO donde el adaptador quitará el mensaje. Este puerto de envío también usará el mapa que creó en la orquestación para asignar el mensaje de sondeo a un mensaje conforme al esquema EmployeeDetails.xsd. Realice los pasos siguientes para configurar el puerto de envío FILE para usar el mapa.
Cree un puerto de envío FILE.
En el panel izquierdo del cuadro de diálogo propiedades del puerto de envío, haga clic en Asignaciones salientes. En el panel derecho, haga clic en el campo debajo de la columna Mapa y, en la lista desplegable, seleccione MapSchema. Haga clic en OK.
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 asignará el mensaje de sondeo al esquema EmployeeDetails, se está ejecutando.
La orquestación de BizTalk para la operación se está ejecutando.
Ejecutar 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. Dado que la instrucción de sondeo consta de una instrucción SELECT y procedimientos almacenados, el adaptador ejecutará todas las instrucciones una después de la otra.
El adaptador ejecuta primero la instrucción SELECT que devuelve todos los registros de la tabla Employee.
A continuación, el adaptador ejecuta el MOVE_EMP_DATA procedimiento almacenado que mueve todos los datos de la tabla Employee a la tabla EmployeeHistory. Este procedimiento almacenado no devuelve ningún valor.
A continuación, el adaptador ejecuta el ADD_EMP_DETAILS procedimiento almacenado que agrega un registro a la tabla Employee. Este procedimiento almacenado devuelve el identificador de empleado del registro insertado.
Una vez ejecutada la instrucción de sondeo y se recibe el mensaje, el mensaje de sondeo se envía al puerto de envío FILE. Aquí, el mapa de salida (MapSchema) configurado en el puerto de envío asigna el mensaje de sondeo al esquema EmployeeDetails y quita el mensaje a una ubicación de archivo. El mensaje es similar al siguiente:
<?xml version="1.0" encoding="utf-8" ?> <EmployeeDetails xmlns="http://Typed_Polling.EmployeeDetails"> <Employee_Info>10751John</Employee_Info> <Employee_Profile>TesterManagesTesting</Employee_Profile> <Employee_Performance>100000</EmployeePerformance> </EmployeeDetails>
En la respuesta anterior, puede observar que el elemento Employee_Info contiene una combinación de id. de empleado (10751) y el nombre del empleado (John). Los demás elementos también contienen combinaciones como asignadas en el asignador que creó como parte de la orquestación.
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