• If you have separate instances then you can of course use sp_configure to specify a maximum amount of memory for each instance.

    You can also specify which CPUs get used by which instance.

    You can also specify the maximum size that the DB files can reach.

    I'll admit my knowledge of virtualisation is sketchy but I know that the CPUs in the virtual machine are themselves virtual. Ultimately they share the bare metal but there is nothing to stop you having a physical box and putting a number of virtual machines on it of varying CPU power. The machines can be ring-fenced from each other as far as the developer is concerned but borrow resources as and when they need it.

    It is even possible to over-commit resources so you have 2 virtual machines that think they have 4GB of RAM even though you only have 4GB in total. Dangerous thing to do but if you know your UAT box will be busy when the DEV box is quiet it can work.

    I believe that the virtual machines get their own IP address so you can achieve isolation of those machines.