Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En esta sección se describe el uso de técnicas de solución de problemas para resolver los errores operativos que puede encontrar al usar el adaptador de Microsoft BizTalk para SQL Server.
Habilitación del seguimiento
Debe habilitar el seguimiento entre el adaptador, el SDK del adaptador de LOB de WCF y SQL Server para recopilar más información sobre los problemas que encuentre al usar el adaptador de SQL. Para obtener más información sobre la compatibilidad con el seguimiento en el adaptador de SQL, vea Seguimiento de diagnóstico y registro de mensajes en el adaptador de SQL.
Problemas conocidos
A continuación se muestran los errores más comunes que pueden producirse al usar el adaptador de SQL, junto con su causa y resolución probables.
Error al cargar los enlaces del adaptador
Problema
Al intentar iniciar el complemento de Visual Studio para agregar una referencia de servicio de adaptador o el complemento de BizTalk Project para consumir un servicio adaptador, recibirá el siguiente error:
There was an error loading the binding, <binding name>, from your system configuration.
ConfigurationErrorsException: Exception has been thrown by the target of an invocation.
Causa
Al intentar iniciar el complemento Agregar referencia de servicio de adaptador o el complemento Consumir servicio de adaptador, WCF carga los enlaces del adaptador para todos los adaptadores instalados. A su vez, los enlaces del adaptador dependen del software cliente específico para la aplicación empresarial. Es posible que se produzca este problema si ha hecho una instalación típica o completa del adaptador, que instala todos los adaptadores incluidos en el paquete de adaptadores de BizTalk. Sin embargo, es posible que las bibliotecas cliente loB se instalen solo para una aplicación empresarial. Como resultado, la GUI no puede cargar los enlaces para los otros adaptadores.
Resolución
Asegúrese de realizar una instalación personalizada de los adaptadores para instalar solo el adaptador que necesita.
El adaptador de SQL no se muestra en la lista de adaptadores en la consola de administración de BizTalk Server.
Problema
A diferencia de la versión anterior de los adaptadores enviados con BizTalk Server, el adaptador de SQL enviado con el paquete de adaptadores de BizTalk no aparece en la lista de adaptadores en la consola de administración de BizTalk Server.
Causa
El adaptador de SQL más reciente es un enlace personalizado de WCF. Por lo tanto, aunque la consola de administración de BizTalk Server muestra el adaptador de WCF-Custom, no muestra los enlaces personalizados de WCF y, por lo tanto, no muestra el adaptador de SQL basado en WCF.
Resolución
Puede agregar explícitamente el adaptador de SQL a la consola de administración de BizTalk Server siguiendo los pasos mencionados en Agregar el adaptador de SQL a la consola de administración de BizTalk Server.
Error al realizar operaciones en una base de datos de SQL Server
Problema
El adaptador proporciona el siguiente error al realizar cualquier operación en una base de datos de SQL Server mediante BizTalk Server.
Para BizTalk Server
System.ArgumentNullException: Value cannot be null.
Causa
No se especifica la acción WCF del mensaje. WCF requiere que se especifique una acción SOAP para cada operación, que informa al adaptador sobre la operación que se va a realizar en la aplicación loB.
Resolución
Especifique la acción SOAP en el puerto de envío o como una propiedad de contexto de mensaje en una orquestación de BizTalk. Para obtener instrucciones, consulte Configuración de la acción SOAP para el adaptador de SQL. Consulte Mensajes y esquemas de mensajes para ver una lista de acciones para cada operación.
Excepción de operación no válida con Código de error=5 al realizar operaciones FILESTREAM
Problema
Obtendrá el siguiente error al usar el adaptador de SQL para realizar operaciones FILESTREAM.
System.InvalidOperationException: OpenSqlFileStream returned error.
ErrorCode:5
Causa
Es posible que haya especificado credenciales de base de datos para conectarse a la base de datos de SQL Server. Para realizar operaciones FILESTREAM, siempre debe usar la autenticación de Windows. El código de error "5" indica que se deniega el acceso debido a credenciales incorrectas. Para obtener más información sobre los diferentes códigos de error, vea Códigos de error del sistema (0-499).
Resolución
Use la autenticación de Windows para conectarse a la base de datos de SQL Server. En la consola de administración de BizTalk Server, puede hacerlo dejando los campos de nombre de usuario y contraseña en blanco en el cuadro de diálogo de configuración de puerto WCF-Custom o WCF-SQL.
La operación de sondeo no devuelve ningún mensaje aunque se especifiquen instrucciones válidas para PollingStatement y PolledDataAvailableStatement
Problema
Incluso si se especifican valores válidos para las propiedades de enlace PollingStatement y PolledDataAvailableStatement, el adaptador no recibe un mensaje de sondeo de SQL Server.
Causa
Compruebe si alguna otra transacción ha tomado un bloqueo en la tabla en la que el adaptador está sondeando.
Resolución
Si desea sondear una tabla que se está actualizando como parte de otra transacción, puede considerar la posibilidad de usar el parámetro "with (nolock)" como parte de la consulta especificada para la propiedad de enlace PolledDataAvailableStatement para asegurarse de que los datos se devuelven incluso si la otra transacción impone un bloqueo. Para obtener más información, vea Bloqueo de SQL en el motor de base de datos.
El adaptador no puede insertar, actualizar o eliminar grandes volúmenes de datos en una sola operación mediante BizTalk Server
Problema
El adaptador de SQL no puede insertar, actualizar o eliminar grandes volúmenes de datos en una sola operación mediante BizTalk Server.
Causa
La inserción, actualización o eliminación de grandes volúmenes de datos puede tardar tiempo y el adaptador de SQL o la transacción en la que se realiza la operación pueden agotar el tiempo de espera.
Resolución
Para BizTalk Server
Especifique el tiempo de espera del adaptador WCF en el machine.config. Navegue al archivo machine.config en la <unidad del sistema>:\WINDOWS\Microsoft.NET\Framework\<version>\CONFIG y agregue el fragmento que se asemeje al siguiente.
<configuration> <system.transactions> <machineSettings maxTimeout="02:00:00" /> </system.transactions> </configuration>
Con esta configuración, el tiempo de espera del adaptador WCF se establece en 2 horas.
Especifique la configuración de tiempo de espera para las transacciones MSDTC en el machine.config. Vaya al archivo machine.config en <unidad> del sistema:\WINDOWS\Microsoft.NET\Framework\<version>\CONFIG y agregue el extracto similar al siguiente.
<system.transactions> <defaultSettings distributedTransactionManagerName="<computer_name>" timeout="02:00:00"/> </system.transactions>
Con esta configuración, el tiempo de espera de MSDTC se establece en 2 horas. El valor predeterminado para el tiempo de espera de MSDTC es de 10 minutos.
Importante
Debe realizar este cambio en los equipos que ejecutan el cliente del adaptador y SQL Server. En el fragmento, reemplace <computer_name> por el nombre del equipo que ejecuta el cliente del adaptador y SQL Server.
Establezca la propiedad de enlace SendTimeout para el adaptador de SQL en un valor bastante grande. Para obtener instrucciones sobre cómo establecer las propiedades de enlace, consulte Configuración de las propiedades de enlace para el adaptador de SQL.
Se produce un error en la validación completa del esquema en BizTalk Server para los mensajes de respuesta que contienen DataSet
Problema
En el caso de las operaciones que devuelven un mensaje de respuesta que contiene un dataSet, por ejemplo ExecuteReader, se produce un error de validación de esquema completa en BizTalk Server.
Resolución
Se recomienda no realizar una validación de esquema completa para los mensajes de respuesta que contienen un conjunto de datos. En su lugar, puede hacer lo siguiente:
Ejecute la operación una vez que devuelva el mensaje de respuesta con el esquema.
Copie el esquema del mensaje de respuesta en un archivo .xsd y agregue este archivo al proyecto de BizTalk.
Use una consulta xpath en la orquestación para extraer los datos del mensaje de respuesta.
Error con RootNode TypeName en proyectos de BizTalk
Problema
En un proyecto de BizTalk en Visual Studio, si los esquemas generados a partir del Complemento Consumir Servicio de Adaptador contienen caracteres no válidos o palabras reservadas para la propiedad RootNode TypeName, se producirá el siguiente error mientras se compila el proyecto.
Node <node reference> - Specify a valid .NET type name for this root node.
The current .NET type name of this root node is invalid (it is a reserved BizTalk Keyword or is an invalid C# identifier).
Resolución
Haga clic con el botón derecho en el nodo rood al que se hace referencia en el error y seleccione Propiedades.
Para la propiedad RootNode TypeName , quite los caracteres no válidos o palabras reservadas, por ejemplo, punto (.).
El adaptador no puede generar metadatos del procedimiento almacenado fuertemente tipado con tablas temporales
Problema
El adaptador no puede generar metadatos para procedimientos almacenados fuertemente tipados que incluyen tablas temporales en su definición. El adaptador proporciona la siguiente excepción.
Microsoft.ServiceModel.Channels.Common.MetadataException:
Retrieval of Operation Metadata has failed while building WSDL at 'TypedProcedure/<schema>/<stored_procedure_name>' --->
System.Data.SqlClient.SqlException: Invalid object name '<temp_table_name>'.
Resolución
El adaptador de SQL no admite la generación de metadatos para procedimientos almacenados fuertemente tipados que contienen tablas temporales en su definición. En su lugar, debe generar metadatos para el mismo procedimiento desde el nodo Procedimientos mientras usa el complemento "Agregar referencia del servicio adaptador" o "Consumir servicio de adaptador".
Advertencia de enlace no válida al usar el adaptador en Visual Studio
Problema
Cuando se usa el adaptador para crear una aplicación en Visual Studio y se abre el archivo de configuración (app.config) generado por el adaptador, verá una advertencia similar a la siguiente:
The element 'bindings' has invalid child element 'sqlBinding'. List of possible elements expected: 'basicHttpBinding, customBinding, ...
Causa
Esta advertencia aparece porque el enlace del adaptador de SQL, sqlBinding
, no es un enlace estándar enviado con Windows Communication Foundation (WCF).
Resolución
Puede omitir esta advertencia de forma segura.
BizTalk Server produce una excepción si usa más de un esquema de notificación en la misma aplicación o usa el esquema de notificación en varias aplicaciones del mismo host.
Problema
BizTalk Server produce una excepción XLANG o una excepción que indica que la aplicación no puede encontrar la especificación del documento porque varios esquemas coinciden con el tipo de mensaje.
Causa
Esto sucede debido a cualquiera de las siguientes acciones:
Ha generado más de un esquema de notificación en un proyecto de BizTalk Server, lo ha implementado en una aplicación de BizTalk Server y, a continuación, ha ejecutado la aplicación para recibir notificaciones de la base de datos de SQL Server. Dado que los esquemas de notificación son comunes, hay un conflicto entre los esquemas que se implementan en la aplicación de BizTalk Server.
En el caso de varios proyectos, ha generado un esquema de notificación para cada uno de los proyectos de BizTalk Server, ha implementado cada proyecto en una aplicación de BizTalk Server independiente en el mismo host y, a continuación, ha ejecutado una aplicación o aplicaciones para recibir notificaciones de la base de datos de SQL Server. Dado que los esquemas y ensamblados son accesibles en las aplicaciones de BizTalk Server, hay un conflicto entre los esquemas comunes implementados en varias aplicaciones y ensamblados de BizTalk Server.
Resolución
Use un único archivo de esquema de notificación para una aplicación de BizTalk Server. Si necesita usar el esquema de notificación en varias aplicaciones de BizTalk Server en el mismo host, cree una aplicación que contenga un único esquema de notificación y, a continuación, use el esquema de notificación de todas las demás aplicaciones de BizTalk Server.
El cliente del adaptador produce una excepción al realizar una operación después de restaurar la conectividad entre el cliente del adaptador y la base de datos de SQL Server.
Problema
El cliente del adaptador produce la siguiente excepción al ejecutar una operación en la base de datos de SQL Server:
{System.Data.Common.DbException} = {"A transport-level error has occurred when sending the request to the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)"}
Causa
Durante la ejecución de una operación, el adaptador usa la conexión del grupo de conexiones de SQL ADO.NET para conectarse a la base de datos de SQL Server y realizar la operación. Si hay una breve interrupción de red entre el cliente del adaptador y la base de datos de SQL Server o si la base de datos de SQL Server está inactiva temporalmente, todas las conexiones del grupo de conexiones de SQL ADO.NET se convierten en no válidas. Después de restaurar la conectividad e intentar realizar una operación en la base de datos de SQL Server, el adaptador usa las mismas conexiones no válidas del grupo de conexiones de SQL ADO.NET y, por tanto, el cliente del adaptador produce la excepción.
Resolución
El cliente del adaptador debe implementar la lógica de reintento en su ejecución de la operación, donde deben detectar la excepción y especificar el recuento de reintentos de la operación como "n+1", donde "n" es el valor especificado para la propiedad de enlace MaxConnectionPoolSize. Esto implica que si hay un número "n" de conexiones en el grupo de conexiones que se han representado no válidos, teóricamente el cliente del adaptador debe reintentar un máximo de "n+1" veces para obtener una conexión válida y, por tanto, realizar la operación.
Por ejemplo, para especificar el recuento de reintentos en BizTalk Server, abra el cuadro de diálogo Propiedades de un puerto de envío en una aplicación, haga clic en Opciones avanzadas de transporte en el panel izquierdo del cuadro de diálogo y, en el área Opciones de transporte , especifique un valor en la lista Recuento de reintentos .
El uso de memoria y el recuento de subprocesos aumenta al usar el adaptador en una operación de entrada transaccionada
Problema
En una operación de entrada transaccionada, como Sondeo, si no hay datos disponibles en la tabla que se está sondeando y el adaptador continúa sondeando, experimentará un aumento en el uso de memoria y el recuento de subprocesos con el paso del tiempo.
Causa
Si no hay datos disponibles en la tabla que se está sondeando, después de cada ciclo de tiempo de espera de recepción, Windows Communication Foundation (WCF) genera un nuevo subproceso para continuar con la operación de sondeo. Por lo tanto, el número de subprocesos y el uso de memoria aumentan durante un período de tiempo. Sin embargo, si la tabla que se sondea tiene algunos datos, el mismo subproceso continúa realizando todos los sondeos posteriores.
Resolución
Se recomienda establecer ReceiveTimeout en el valor máximo posible, que es 24.20:31:23.6470000 (24 días) para que un nuevo subproceso se genere solo cada 24 días. Esto garantizará que el uso de memoria y el recuento de subprocesos no crezcan demasiado pronto.
Nota:
Si se ha establecido SqlAdapterInboundTransactionBehavior, asegúrese de que TransactionTimeout también está configurado para el valor máximo posible, que es 24.20:31:23.6470000 (24 días). Al usar esta solución alternativa, se puede agregar SqlAdapterInboundTransactionBehavior solo si se debe configurar el nivel de aislamiento de transacción. De lo contrario, se recomienda eliminar esa conducta.
Para obtener más información sobre la propiedad ReceiveTimeout, consulte las propiedades de enlace del adaptador de BizTalk para SQL Server. Para obtener instrucciones sobre cómo especificar propiedades de enlace, consulte Configuración de las propiedades de enlace para el adaptador de SQL.
Nota:
Al usar el adaptador con BizTalk Server, establecer el tiempo de espera en un valor grande no afecta a la funcionalidad del adaptador.