Estou tentando mudar um SQL Agent Operator em meu sistema e ele não permite.
Eu tenho sa, mas acho que é parcialmente devido a como estou fazendo isso.
Estou tentando modificar o operador com o nome NIT and Arts
to NIT and ARTS
e quando faço isso ele volta com o erro "O especificado @name
( NIT and ARTS
) já existe, embora não exista atualmente.
Eu estou correndo SQL Server 2008R2
. Qualquer ajuda com isto seria ótimo. Obrigado.
Em um servidor que não diferencia maiúsculas de minúsculas, esses dois nomes são idênticos. Não tenho certeza se você está usando a interface do usuário para isso, mas recebo o mesmo erro quando executo o seguinte código:
Rendimentos:
Se olharmos para o código para
sp_verify_operator
, vemos que há uma fraqueza aqui como penalidade por não usar uma chave substituta: ele verifica todas as linhas existentes em busca de uma correspondência no nome, incluindo a linha que você está tentando alterar :Idealmente, ele deveria ignorar a linha que você está tentando alterar, mas não pode porque não há como filtrar exceto pelo nome. E em um agrupamento que diferencia maiúsculas de minúsculas, a verificação acima falha porque essa linha já tem esse nome.
Como contornamos isso? Bem, você poderia reconstruir o msdb ou algo assim em um agrupamento binário ou sensível a maiúsculas, mas acho que é mais fácil, basta executar esta consulta manualmente: