Hay una observación que tengo que hacer y es que en la declaración de tu tabla temporal el campo ERROR está declarado como un varchar(2) por lo que es imposible introducir la palabra "ERROR" en dicho campo ya que se truncaría la cadena y por lo tanto marcaría un error de SQL, supongo que se trato de un error al copiar la consulta.
Intenta con esto_
Código SQL:
Ver originalUPDATE #B SET ERROR = 'ERROR'
FROM #B B LEFT JOIN #A A ON B.CA = A.CA AND B.CB = A.CB
WHERE A.CA IS NULL
De hecho tal vez te convenga dejar este campo como tipo BIT, con valor por defecto 0 y 1 en caso de haber error, pero eso es cuestión de tu lógica de negocio.
Saludos
Leo.