SQL Server 2016 Standard Ed no Windows 2016
Temos uma máquina de 8 núcleos e 128 GB (uma VM, na verdade). Nós maximizamos isso para o nosso prod db. (122 GB para a instância, 8 núcleos para a instância)
Estamos configurando um 2º db, para estar em seu próprio conjunto de eixos (discos mais lentos), e não queremos que isso afete o prod db. Isso será na mesma VM (como entendemos, podemos usar a licença SQL existente dessa maneira).
Este 2º db deve ser servido por sua própria instância SQL para:
- Restringir a RAM consumida (para muito pouco, apenas 4 ou 8 GB)
- Restringir a 2 núcleos de CPU
Ou podemos restringir esse banco de dados dentro da instância principal?
(Observação, Express Edition não é uma opção, nosso db terá mais de 10 GB)
Você não pode. Não existem restrições por banco de dados porque uma consulta pode cruzar vários bancos de dados (pense em junções e objetos totalmente qualificados).
O Resource Governor do SQL Server, em teoria, existe para dar suporte a isso, mas só funciona em coisas como contagem de CPU, memória de espaço de trabalho de consulta e E/S de disco. Ele não funciona no buffer pool, portanto, ainda não atenderá às suas necessidades.
Não tenho certeza se seu licenciamento permitiria isso, mas você obteria algum grau de controle ajustado instalando uma segunda instância SQL no mesmo host.
Com isso, você pode definir a memória máxima de cada instância individualmente, e ainda tem alguma capacidade de ajustar as configurações da CPU (afinidade do processador) para cada uma (embora você deva realmente entender essa configuração antes de mexer nela ).
O problema é que, mesmo nesse cenário, se a gerência me perguntasse: "você pode garantir que isso não afetará o banco de dados de produção na instância primária", eu teria que responder "não, não posso garantir isso". Para isso, você deseja executar em uma VM totalmente separada.