Cursos
Módulo
Implementación del control de errores con Transact-SQL - Training
Implementación del control de errores con Transact-SQL
Este explorador ya no se admite.
Actualice a Microsoft Edge para aprovechar las características y actualizaciones de seguridad más recientes, y disponer de soporte técnico.
Este artículo le ayuda a resolver el problema que se produce cuando se usa un controlador de lógica de negocios personalizado en SQL Server.
Versión original del producto: SQL Server 2008 Standard, SQL Server 2008 Enterprise, SQL Server 2008 R2 Standard, SQL Server 2008 R2 Enterprise, SQL Server 2008 R2 Datacenter, SQL Server 2012 Standard, SQL Server 2012 Enterprise, SQL Server 2012 Developer
Número de KB original: 2598605
Considere el caso siguiente:
varchar
de datos .varchar
columna contiene una cadena vacía ('').Nota
Este problema no se produce con un valor NULL o un valor de espacio único (' ').
En este escenario, aunque no se devuelve ningún error, el controlador de lógica de negocios personalizado reemplaza la cadena vacía por un solo end-of-string
carácter. Por ejemplo, el controlador de lógica de negocios personalizado reemplaza la cadena vacía por una de las siguientes cadenas:
Este problema se produce debido a cómo los componentes del agente de mezcla y el controlador de lógica de negocios pasan datos dentro y fuera de las variables intermedias.
Es posible que pueda solucionar este problema mediante el nvarchar
tipo de datos en lugar del varchar
tipo de datos.
El problema que se describe en la sección Síntomas puede producirse si el controlador de lógica de negocios personalizado controla instrucciones conflictivas UPDATE
en el publicador y el suscriptor. La cadena vacía se reemplaza por el carácter único end-of-string
después de copiar el conjunto de datos del publicador o suscriptor en el conjunto de datos personalizado y, a continuación, se pasa el conjunto de datos personalizado al reconciliador de replicación de mezcla.
Además, este problema se produce si los datos no cambian en código personalizado similar al siguiente:
public override ActionOnUpdateConflict UpdateConflictsHandler(..., ref customDataSet, ...)
{
customDataSet = publisherDataSet.Copy();
conflictLogType = ConflictLogType.ConflictLogPublisher;
return ActionOnUpdateConflict.AcceptCustomConflictData;
}
Cursos
Módulo
Implementación del control de errores con Transact-SQL - Training
Implementación del control de errores con Transact-SQL