Consideraciones para recibir notificaciones de consulta mediante el adaptador de SQL
En este tema se proporcionan algunas consideraciones y procedimientos recomendados que se deben tener en cuenta al usar el adaptador de SQL para recibir notificaciones de consulta de una base de datos de SQL Server.
Consideraciones al usar el adaptador para recibir notificaciones
Debe tener en cuenta lo siguiente al usar el adaptador de SQL para recibir notificaciones de consulta:
El adaptador de SQL recibe la notificación de consulta de SQL Server y, a continuación, simplemente pasa la notificación a los clientes del adaptador. El adaptador no distingue entre las notificaciones de diferentes operaciones (es decir, el adaptador no tiene ninguna información si una notificación determinada es para una operación de inserción o una operación de actualización).
El mensaje de notificación de una operación no se ve afectado por el número de registros afectados por esa operación. Por ejemplo, independientemente del número de registros insertados, actualizados o eliminados en una tabla de base de datos de SQL Server, el cliente del adaptador recibe solo un mensaje de notificación.
Se recomienda que la aplicación cliente del adaptador contenga la lógica para interpretar el tipo de notificación recibida de SQL Server. El tipo de notificación se puede determinar extrayendo la información del <elemento Info> del mensaje de notificación recibido. Este es un ejemplo de un mensaje de notificación recibido para una operación de inserción:
<Notification xmlns="http://schemas.microsoft.com/Sql/2008/05/Notification/"> <Info>Insert</Info> <Source>Data</Source> <Type>Change</Type> </Notification>
Observe el valor dentro del <elemento Info> . Este valor proporciona información sobre la operación para la que se recibió el mensaje de notificación. La aplicación debe tener la funcionalidad para extraer el valor dentro del <elemento Info> y, a continuación, en función del valor, realizar tareas posteriores. El tema Procesar mensajes de notificación para completar tareas específicas en SQL mediante BizTalk Server tiene instrucciones sobre cómo extraer el valor dentro del <elemento Info>. Un tutorial detallado que realiza tareas similares también está disponible en Tutorial 2: Proceso de pedido de compra mediante el adaptador de SQL.
Idealmente, después de que la aplicación cliente reciba una notificación para un registro específico, ese registro debe actualizarse para que no se reciban notificaciones adicionales. Por ejemplo, considere una tabla Employee que tiene una columna Status . Para todos los registros nuevos insertados en la tabla Employee , el valor de la columna Estado siempre es "0", por lo que la tabla tendrá un aspecto similar al siguiente:
Nombre de empleado Estado John 0 Para recibir notificaciones para el registro recién insertado, el cliente del adaptador establecerá la propiedad de enlace NotificationStatement como:
SELECT Employee_ID, Name FROM dbo.Employee WHERE Status=0
Nota
Debe especificar específicamente los nombres de columna en la instrucción como se muestra en esta instrucción SELECT. Además, siempre debe especificar el nombre de la tabla junto con el nombre del esquema. Por ejemplo, dbo. Empleado.
Después de recibir la notificación, la aplicación cliente debe restablecer el valor de la columna Estado a "1" para que la instrucción de notificación no vuelva a funcionar en el registro. Para ello, la aplicación cliente debe realizar una operación de actualización en la tabla Employee . Después de la operación De actualización, el mismo registro de la tabla Employee tendrá el siguiente aspecto:
Nombre de empleado Estado John 1 Interesantemente, la operación de actualización enviará de nuevo una notificación al cliente del adaptador y todo el proceso se repetirá de nuevo, por lo que la aplicación cliente debe tener la lógica necesaria para descartar dichas notificaciones no deseadas.
Si la propiedad de enlace NotifyOnListenerStart es true, el cliente del adaptador recibirá un mensaje de notificación cada vez que se inicie la ubicación de recepción. Para obtener más información sobre cómo usar la propiedad binding e interpretar el mensaje de notificación, vea Recibir notificaciones de consulta después de un desglose de ubicación de recepción en SQL mediante BizTalk Server.
Orquestación típica para recibir notificaciones
En esta sección se describe el flujo de orquestación típico para recibir notificaciones mediante el adaptador de SQL.
Lo primero que debe hacer la orquestación es determinar el tipo de notificación recibida, entre las que se incluyen:
Si la notificación se recibió después de reiniciar una ubicación de recepción.
Si se recibió la notificación para una operación en una tabla de base de datos, como Insertar, Actualizar o Eliminar.
La orquestación debe incluir una forma expresión y, dentro de ella, una consulta xpath para decidir qué tipo de mensaje se recibe.
Una vez determinado el tipo de notificación, la orquestación debe incluir un bloque de decisión para realizar acciones específicas en función del tipo de notificación recibida. Para ello, la orquestación debe incluir una forma Decidir , que incluye un bloque Regla y un bloque Else :
Dentro del bloque Regla , debe especificar la condición y, a continuación, incluir formas de orquestación para realizar determinadas operaciones si se cumple la condición.
Dentro del bloque Else , debe incluir formas de orquestación para realizar determinadas operaciones si no se cumple la condición.
Los detalles de los requisitos anteriores se describen en Procesar mensajes de notificación para completar tareas específicas en SQL mediante BizTalk Server. También hay un tutorial detallado disponible en tutorial 2: Proceso de pedido de compra con el adaptador de SQL.