Ejecución de procedimientos almacenados con un único parámetro XML en SQL Server mediante BizTalk Server
Ejecutar un procedimiento almacenado que toma un único parámetro es similar a ejecutar cualquier otro procedimiento almacenado, como se describe en Ejecutar procedimientos almacenados en SQL Server mediante BizTalk Server. Sin embargo, para el enfoque descrito en el vínculo anterior, debe generar metadatos para el procedimiento almacenado en tiempo de diseño y crear una orquestación para invocar el procedimiento en tiempo de ejecución.
Considere un escenario en el que solo quiere pasar un valor único a un procedimiento almacenado sin realizar ningún procesamiento en ese valor. En tales casos, no desea la sobrecarga de generar metadatos, crear una orquestación, implementar la orquestación y ejecutar la operación. En su lugar, puede configurar un puerto de envío de WCF-Custom o WCF-SQL para invocar directamente el procedimiento almacenado. En este tema se muestra cómo realizar estas tareas mediante la consola de administración de BizTalk Server.
Nota
En este tema se proporcionan instrucciones sobre cómo configurar un puerto de envío de WCF-Custom para ejecutar un procedimiento almacenado que toma un único parámetro. Puede realizar los mismos pasos configurando un puerto WCF-SQL. Para obtener instrucciones sobre cómo configurar el puerto WCF-SQL, vea Configurar un puerto mediante el adaptador WCF-SQL.
Invocación de procedimientos almacenados sin orquestación
Para demostrar cómo ejecutar procedimientos almacenados con parámetros únicos sin orquestación, en este tema se usa el procedimiento almacenado ADD_LAST_EMP_XML_INFO. Este procedimiento toma un valor XML como parámetro e lo inserta en la columna Dirección de la tabla Employee . Debe tener el valor XML que pasará al procedimiento almacenado. Sin embargo, para ejecutar el procedimiento almacenado mediante el adaptador, debe enviar un mensaje de solicitud conforme al esquema del procedimiento y contener el valor XML para el campo Dirección al SQL Server. Por lo tanto, debe crear ese mensaje de solicitud mediante:
Con la opción Plantilla de la configuración del puerto de envío mediante la que puede crear un mensaje de solicitud mediante una plantilla de mensaje.
Colocar el valor XML para el campo Dirección en el mensaje.
Todos estos pasos se describen en detalle en este tema. Debe realizar el siguiente conjunto de tareas:
Cree un puerto de recepción FILE en el que quitará el archivo XML que se insertará en el campo XML de dirección de la tabla Employee . Supongamos que este puerto se denomina puerto MessageIn .
Cree un puerto de envío unidireccional WCF-Custom que seleccione el archivo XML del puerto de recepción FILE, construye el mensaje mediante la plantilla de mensaje y lo envía a SQL Server para ejecutar el procedimiento almacenado.
En esta parte del tema se proporcionan instrucciones sobre cómo configurar un puerto de envío WCF-Custom con la plantilla de mensaje.
Nota
Aunque la información de este tema muestra cómo ejecutar un procedimiento almacenado con un único parámetro XML, puede realizar las tareas para realizar cualquier operación que tome un único parámetro de cualquier tipo de datos. La única diferencia será la forma de crear una plantilla de mensaje para una operación específica. Puede crear una plantilla de mensaje tomando el mensaje de solicitud que usaría para ejecutar la operación mediante una orquestación y reemplazando el valor del parámetro por el cuerpo del mensaje de BizTalk.
Configuración de un puerto de envío de WCF-Custom
Antes de crear el puerto de envío de WCF-Custom, asegúrese de que ha creado el puerto de recepción FILE, MessageIn.
Inicie la consola de administración de BizTalk Server.
En el árbol de consola, expanda Grupo de BizTalk y, a continuación, expanda Aplicaciones.
Expanda la aplicación en la que desea implementar el adaptador de SQL.
Haga clic con el botón derecho en Puertos de envío, seleccione Nuevoy, a continuación, seleccione Puerto de envío unidireccional estático.
En el cuadro de diálogo Propiedades del puerto de envío, en la pestaña General , escriba un nombre para el puerto de envío.
Configure el puerto para recibir todos los mensajes descartados en el puerto de recepción FILE, MessageIn.
En el cuadro de diálogo Propiedades del puerto de envío , en el panel izquierdo, haga clic en Filtros.
En el panel derecho, en la columna Propiedad , haga clic en la cuadrícula y, a continuación, seleccione BTS. Propiedad ReceivePortName .
En la columna Operador , seleccione "==".
En la columna Valor , especifique el nombre del puerto de recepción FILE,
MessageIn
.
En el cuadro de diálogo Propiedades de puerto de envío, en la pestaña General , en la lista desplegable Tipo , seleccione WCF-Custom y, a continuación, haga clic en Configurar.
En el cuadro de diálogo Propiedades de transporte personalizadas de WCF , haga lo siguiente:
Haga clic en la pestaña General y, en el campo Dirección (URI), especifique el URI de conexión para SQL Server. Para obtener más información sobre el URI de conexión, consulte Creación del URI de conexión de SQL Server.
En la pestaña General , en el cuadro de texto Acción , escriba la acción para la operación. Consulte Mensajes y esquemas de mensajes para obtener una lista de acciones para cada operación. Por ejemplo, la acción para invocar el ADD_LAST_EMP_XML_INFO es:
Procedure/dbo/ADD_LAST_EMP_XML_INFO
Haga clic en la pestaña Enlace y, en la lista Tipo de enlace, seleccione sqlBinding. Puede especificar las diferentes propiedades de enlace expuestas por el adaptador de SQL. Para obtener más información sobre las propiedades de enlace, vea Leer sobre el adaptador de BizTalk para SQL Server propiedades de enlace del adaptador.
Haga clic en la ficha Credenciales y realice una de las siguientes acciones:
Seleccione la opción No usar inicio de sesión único y especifique el nombre de usuario y la contraseña para conectarse a SQL Server. Tenga en cuenta que el nombre de usuario y la contraseña distinguen entre mayúsculas y minúsculas.
Nota
Si desea conectarse a SQL Server mediante autenticación de Windows, especifique un nombre de usuario y una contraseña en blanco.
Seleccione la opción Usar inicio de sesión único y, a continuación, especifique una aplicación de inicio de sesión único (SSO) afiliada.
Para obtener más información sobre la seguridad con respecto a BizTalk Server, consulte Seguridad con el adaptador de SQL y BizTalk Server.
Haga clic en la pestaña Mensajes y, en la sección Cuerpo del mensaje WCF saliente , elija la opción Plantilla .
En el cuadro de texto XML , especifique la plantilla que se usará para construir el mensaje WCF. Al hacerlo, se crea un mensaje que se ajusta a la operación de ADD_LAST_EMP_XML_INFO para el adaptador de SQL basado en WCF.
Para el procedimiento almacenado de ADD_LAST_EMP_XML_INFO, debe especificar la siguiente plantilla:
<ADD_LAST_EMP_XML_INFO xmlns="http://schemas.microsoft.com/Sql/2008/05/Procedures/dbo"> <xml_info> <bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2007" encoding="string"/> </xml_info> </ADD_LAST_EMP_XML_INFO>
Importante
La codificación de la plantilla de mensaje siempre debe ser "string" independientemente del tipo del parámetro para la operación que se invocará mediante el puerto de envío. Por ejemplo, el ADD_LAST_EMP_XML_INFO toma un parámetro de tipo XML, pero la codificación de la plantilla de mensaje es cadena.
Nota
Puede crear esta plantilla de mensaje copiando el mensaje de solicitud para el procedimiento almacenado y reemplazando el valor dentro de las <etiquetas xml_info> por el cuerpo del mensaje de BizTalk. Para obtener el mensaje de solicitud para el procedimiento almacenado, genere el esquema para el procedimiento mediante el Complemento de servicio consumir adaptador y, a continuación, genere una instancia del esquema para obtener el XML de solicitud.
Para volver al cuadro de diálogo Propiedades del puerto de envío, haga clic en Aceptar.
En la lista Enviar controlador , seleccione BizTalkServerApplication.
En la lista Enviar canalización , seleccione la canalización que corresponde a PassThruTransmit.
Haga clic en OK.
Iniciar la aplicación
Para iniciar la aplicación de BizTalk, puede iniciar la ubicación de recepción del archivo y el puerto de envío WCF-Custom individualmente. Ahora debe copiar un archivo XML en la carpeta asignada a la ubicación de recepción del archivo. La aplicación de BizTalk consume el archivo y el valor XML se inserta en la columna Dirección de la tabla Employee. Para comprobarlo, use un cliente SQL Server y seleccione los registros de la tabla Employee.
Uso de un puerto de envío bidireccional WCF-Custom
Las instrucciones de este tema, en la sección Cómo configurar un puerto de envío de WCF-Custom, muestran cómo configurar un puerto de envío unidireccional WCF-Custom para ejecutar un procedimiento almacenado con un único parámetro sin usar una orquestación de BizTalk. Sin embargo, en tal caso, para comprobar si el procedimiento almacenado se ejecuta correctamente, tendrá que comprobar en la base de datos de SQL Server si se actualiza la columna Address de la tabla Employee.
En su lugar, puede crear un puerto de envío bidireccional WCF-Custom que también obtiene la respuesta de SQL Server si el procedimiento almacenado se ejecuta correctamente. Debe realizar algunos pasos adicionales si crea un puerto de WCF-Custom bidireccional. Tenga en cuenta que seguirá necesitando una ubicación de recepción file, como se mencionó en las instrucciones anteriores.
Cree un puerto de envío bidireccional WCF-Custom, por ejemplo, ExecProcedure. Los pasos para configurar el puerto de envío son similares a los del puerto de envío unidireccional. La única diferencia es que para el puerto bidireccional también debe especificar una canalización de recepción. Asegúrese de seleccionar PassThruReceive para la canalización de recepción.
Cree un puerto de envío FILE. Este puerto quitará el mensaje de respuesta de la base de datos SQL Server a una carpeta. Con la pestaña Filtros del cuadro de diálogo propiedades del puerto, configure el puerto de envío DE ARCHIVOS para recibir todos los mensajes de respuesta del puerto de envío de WCF-Custom.
En el cuadro de diálogo Propiedades del puerto de envío , en el panel izquierdo, haga clic en Filtros.
En el panel derecho, en la columna Propiedad , haga clic en la cuadrícula y, a continuación, seleccione BTS. Propiedad SPName .
En la columna Operador , seleccione "==".
En la columna Valor , especifique el nombre del puerto de envío de WCF-Custom,
ExecProcedure
.
Inicie los tres puertos. Copie un archivo XML en la carpeta asignada a la ubicación de recepción del archivo. Busque la respuesta en la carpeta asignada al puerto de envío FILE.