• For some reason, the min_memory_percent of the OLTPPool and ReportPool were both 50 which seems like a typo. That must have caused the system to be starved and lead to the procedure cache not keeping/reusing plans.

    CREATE RESOURCE POOL [OLTPPool] WITH(min_cpu_percent=50,

    max_cpu_percent=100,

    min_memory_percent=50,

    max_memory_percent=100,

    cap_cpu_percent=100,

    AFFINITY SCHEDULER = AUTO

    )

    GO

    CREATE RESOURCE POOL [ReportPool] WITH(min_cpu_percent=50,

    max_cpu_percent=100,

    min_memory_percent=50,

    max_memory_percent=100,

    cap_cpu_percent=100,

    AFFINITY SCHEDULER = AUTO

    )

    GO