
Recentemente, cheguei a um cenário em que fui contratado para ajudar a gerenciar um sistema hospedado onde hospedamos nosso próprio produto para nossos clientes. Cada cliente recebe um usuário exclusivo para uma instância SQL específica e estamos executando várias instâncias, porém uma instância pode ter entre 50 e 100 usuários. Também permitimos que fornecedores terceirizados parceiros executem software que, também, acessa o mesmo banco de dados do cliente que nosso próprio software permite para o mesmo usuário. O que descobri, no entanto, é que os programas de terceiros geralmente são mal implementados e consomem grandes quantidades de CPU, atrapalhando o cliente. Eu sei que, usando o administrador de recursos, você pode limitar a quantidade de recursos aos quais um usuário específico tem acesso. No entanto, estou me perguntando se existe uma maneira de limitar os recursos aos quais um nome de programa específico tem acesso ou defini-lo com uma prioridade mais baixa. Temos um prazo limitado para a execução desses aplicativos de terceiros, portanto, não posso esticar ainda mais o tempo do aplicativo. Não encontrei até o momento nenhuma forma de limitar recursos ou prioridade de um programa específico no acesso ao SQL, gostaria de saber se existe algum recurso para esse tipo de informação que não tenha surgido em minhas pesquisas?
Responder1
Eu fiz algumas leituras e pelo que parece, usando o Resource Governor, você pode classificar cada sessão/conexão e atribuí-la a um pool de recursos específico. O pool de recursos é o que pode limitar os recursos conforme você achar adequado. No entanto, para conseguir isso, você precisaria definir uma função classificadora que examinaria os atributos da sessão e determinaria a qual pool de recursos a conexão pertenceria.
Você poderia usar a APP_NAME()
função em SQL (dentro da função classificadora) para buscar o nome do aplicativo que está fazendo a conexão. E então atribua a um pool de recursos com recursos de arrendador atribuídos.
Links de referência:
Governador de recursos -https://msdn.microsoft.com/en-us/library/bb933866(v=sql.105).aspx
Crie e teste uma função de classificador definida pelo usuário -https://msdn.microsoft.com/en-us/library/cc645892(v=sql.105).aspx