Compartir a través de


Recibir mensajes modificados por datos basados en sondeos de SQL Server mediante BizTalk Server

Puede configurar el adaptador de SQL para recibir mensajes periódicos de cambio de datos para SQL Server tablas o vistas. 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.

Para obtener más información sobre cómo admite el sondeo el adaptador, consulte Compatibilidad con sondeos. Para obtener información sobre la estructura del mensaje SOAP para las operaciones de sondeo, vea Esquemas de mensajes para las operaciones polling y TypedPolling.

Nota

En este tema se muestra cómo usar la operación de entrada de sondeo para usar mensajes de sondeo. El mensaje de la operación de sondeo no está fuertemente tipado y el esquema del objeto que se está sondeando se recupera junto con el mensaje en tiempo de ejecución. 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 Recibir 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 única. 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 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, cree un proyecto de BizTalk y genere esquema para la operación de sondeo . Si desea especificar las propiedades de enlace relacionadas con el sondeo en tiempo de diseño, especifique PolledDataAvailableStatement como:

SELECT COUNT(*) FROM Employee  

PolledDataAvailableStatement debe devolver un conjunto de resultados con la primera celda que contiene un valor positivo. Si la primera celda no contiene un valor positivo, el adaptador no ejecuta la instrucción de sondeo.

Como parte de la instrucción de sondeo, realice las siguientes operaciones:

  • Seleccione todas las filas de la tabla Empleado.

  • 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 del empleado, la designación y el salario 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   

Una vez ejecutada la instrucción de sondeo, se seleccionan todos los registros de la tabla Employee y el mensaje de SQL Server se quita en una ubicación de recepción. Una vez que el adaptador ejecuta el MOVE_EMP_DATA procedimiento almacenado, todos los registros se mueven a la tabla EmployeeHistory. A continuación, el ADD_EMP_DETAILS procedimiento almacenado se ejecuta para agregar un nuevo registro a la tabla Employee. La siguiente ejecución de sondeo solo devolverá un único registro. Este ciclo continúa hasta que se deshabilita el puerto de recepción que sondea SQL Server.

Configuración de una consulta de sondeo 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. Debe especificar estas propiedades de enlace al configurar el puerto de recepción en la consola de administración de BizTalk Server.

Nota

Puede optar por especificar estas propiedades de enlace al generar el esquema para la operación de sondeo , aunque no sea obligatorio. Si lo hace, 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 que especifique para las propiedades de enlace. Más adelante 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 puerto 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.
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.
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án 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 información.

Cómo recibir mensajes de cambio de datos de la base de datos de SQL Server

Realizar una operación en la base de datos de 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, estas tareas son:

  1. Cree un proyecto de BizTalk y, a continuación, genere el esquema para la operación de sondeo . Opcionalmente, puede especificar valores para las propiedades de enlace PolledDataAvailableStatement y PollingStatement .

  2. Cree un mensaje en el proyecto de BizTalk para recibir mensajes de la base de datos de SQL Server.

  3. Cree una orquestación para recibir mensajes de la base de datos SQL Server y guardarlos en una carpeta.

  4. Compile e implemente el proyecto de BizTalk.

  5. 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 de entrada, siempre debe configurar un puerto de recepción de WCF-Custom unidireccional o WCF-SQL. Los puertos de recepción de WCF-Custom bidireccionales o WCF-SQL no se admiten para las operaciones entrantes.

  6. Inicie la aplicación de BizTalk.

    En este tema se proporcionan instrucciones para realizar estas tareas.

Generación de esquema

Debe generar el esquema para la operación de sondeo . Consulte Recuperación de metadatos para SQL Server operaciones en Visual Studio mediante el adaptador de SQL para obtener más información sobre cómo generar el esquema. Realice las siguientes tareas al generar el esquema. Omita el primer paso si no desea especificar las propiedades de enlace en tiempo de diseño.

  1. Especifique un valor para las propiedades de enlace PolledDataAvailableStatement y PollingStatement al generar el esquema. 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.

  2. Seleccione el tipo de contrato como Servicio (operación de entrada).

  3. Genere el esquema para la operación de sondeo .

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 de SQL Server.

Realice los pasos siguientes para crear mensajes y vincularlos al esquema.

  1. 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.

  2. 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.

  3. En la vista Orquestación, haga clic con el botón derecho en Mensajes y, a continuación, haga clic en Nuevo mensaje.

  4. Haga clic con el botón derecho en el mensaje recién creado y, a continuación, seleccione Ventana Propiedades.

  5. En el panel Propiedades de Message_1, haga lo siguiente:

    Use Para hacer esto
    Identificador Escriba Receive.
    Tipo de mensaje En la lista desplegable, expanda Esquemas y seleccione PollingQuery.Polling, donde PollingQuery es el nombre del proyecto de BizTalk. El sondeo es el esquema generado para la operación de sondeo .

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 entrante, 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.

    Orquestación para sondear una base de datos SQL Server

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 el nombre en ReceiveMessage

- Establecer Activar enTrue
SaveMessage Envío - Establecer el 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 que se muestran en la orquestación.

Port Propiedades
SQLReceivePort - Establecer identificadoren SQLReceivePort

- Establecer tipoen 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 el mensaje en recibir

- Establecer operación en SQLReceivePort.Polling.Request
SaveMessage - Establecer el mensaje en recibir

- Establecer operación en SaveMessagePort.Polling.Request

Después de especificar estas propiedades, las formas y los puertos de mensaje están conectados 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 obtener un tutorial, vea 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ísico 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 establecer esto en Sondeo.
      PolledDataAvailableStatement Asegúrese de especificar una instrucción SQL. Para este tema, especifique:

      SELECT COUNT(*) FROM Employee
      PollingStatement Asegúrese de especificar la instrucción de sondeo. Para este tema, especifique:

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

      Para obtener más información sobre las distintas 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 mientras se realizan operaciones de entrada mediante el adaptador de SQL. Para ello, agregue el comportamiento del servicio al configurar el puerto de recepción 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 que:

  • 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 el sondeo.

  • 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 procedimiento almacenado ADD_EMP_DETAILS que agrega un registro a la tabla Employee. Este procedimiento almacenado devuelve el id. de empleado del registro insertado.

      Por lo tanto, el mensaje recibido de SQL Server contendrá varios conjuntos de resultados (para la instrucción SELECT y para ADD_EMP_DETAILS procedimiento almacenado) y se parecerá a lo siguiente:

    <?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 respuesta anterior contiene dos conjuntos de datos. El primer conjunto de datos contiene la respuesta de la instrucción SELECT. La instrucción SELECT selecciona todos los registros de la tabla Employee. El segundo conjunto de datos es para el procedimiento almacenado ADD_EMP_DETAILS. Este procedimiento almacenado agrega un registro a la tabla Employee y devuelve el identificador de empleado para el nuevo registro.

    Nota

    El MOVE_EMP_DATA procedimiento almacenado no devuelve un conjunto de resultados. Por lo tanto, no hay ningún conjunto de datos correspondiente en el mensaje de respuesta.

  • Cuando el adaptador vuelve a ejecutar PollDataAvailableStatement , encuentra un registro insertado por el procedimiento almacenado ADD_EMP_DETAILS. A continuación, el adaptador ejecuta las tres instrucciones especificadas para la propiedad de enlace PollingStatement . Esta vez, la respuesta de SQL Server contiene solo un registro para la instrucción SELECT y un registro para el procedimiento almacenado ADD_EMP_DETAILS. Todos los sondeos posteriores devolverán respuestas similares.

Nota

El adaptador de SQL seguirá sondeando hasta que deshabilite explícitamente el puerto de recepción de la consola de administración de BizTalk Server.

Prácticas recomendadas

Una vez implementado y configurado el proyecto de BizTalk, puede exportar los valores 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 sea necesario 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