Cada vCPU conta como uma única CPU de dentro do sistema operacional convidado, o que significa que os sistemas operacionais convidados e os aplicativos dentro deles, cada núcleo físico é uma única CPU.
A virtualização abstrai o hardware físico, de modo que todo o sistema operacional guest e qualquer aplicativo dentro dele possa ver os valores que o hypervisor passa para eles. No seu caso, o hypervisor informa ao sistema operacional que você tem dois processadores, porque é assim que você o configura - para ter dois processadores virtuais. Então, quando o SQL vai ver quantas CPUs você tem, o SQL vê as duas CPUs [virtuais] que você designou, então o SQL Express se limita a usar uma.
Eu acho que devo acrescentar isso: Um rápido e sujo sobre como configurar vCPUs no Hyper-V . Se você quiser que o SQL Express use mais recursos de CPU, coloque em uma vCPU e mapeie-a para mais processadores físicos e / ou um limite de recurso mais alto. Isso permitirá que o SQL Express use o máximo de recursos da CPU que o host pode alocar para ele, sem colidir com a limitação de licenciamento de CPU do SQL Express.
Ah, mas não faça isso em seu sistema operacional existente, já que a mudança do número de processadores entre CPUs simples e múltiplas em um sistema operacional Windows causa problemas - torna o sistema operacional instável. Crie uma nova VM, com uma nova instalação do SO, e desta vez apenas crie uma vCPU, que você pode mapear para mais recursos físicos.