Estás usando un navegador desactualizado. Puede que no muestre este u otros sitios correctamente. Te recomendamos actualizar o usar un navegador alternativo.
La falencia de esta solución es que te retorna un valor entre el mínimo (40031) y máximo que existe en la tabla (89992). El mínimo debiera ser 10000 y el máximo 99999, es decir, el primer valor que debe retornar es el 10000 o 10001.
Tomando tú solución y modificandola un poco:
Código:
SELECT MIN(idcliente)+1
FROM
(
SELECT 10000 'idCliente'
UNION ALL
SELECT idCliente FROM Cliente
UNION ALL
SELECT 99999 'idCliente'
) AS TMP
WHERE TMP.idCliente + 1 NOT IN (SELECT idCliente FROM Cliente)