Estou tendo um problema confuso depois de alterar o nome do computador de um servidor remoto que hospeda uma instância local do SQL Server.
Basicamente, um servidor remoto foi movido de um site para outro. Para facilitar isso, fiz backup e restaurei o banco de dados antigo para um novo nome de banco de dados, limpando os dados para que pudessem ser usados como um novo banco de dados para o software cliente. Também mudei o nome do computador, como sempre fazemos para identificar cada servidor pelo número do site.
O banco de dados pode ser conectado corretamente pelo software cliente, e posso efetuar login diretamente no SQL Server. No entanto, um dos meus trabalhos do SQL Server Agent falha, com um erro no log de eventos:
Tarefa agendada do SQL Server 'Redefinição noturna' (0x4F76FDFFF6DFFE4EA0DE4A70252AD3BD) - Status: com falha - Invocada em: 2012-02-07 08:10:05 - Mensagem: A tarefa falhou. Não foi possível determinar se o proprietário (Site-19 \ Admin) da tarefa Redefinição Noturna tem acesso ao servidor (motivo: não foi possível obter informações sobre o grupo / usuário do Windows NT 'Site-19 \ Admin', código de erro 0x534. [SQLSTATE 42000] ( Erro 15404)).
Agora, 'Site-19' é o nome antigo do computador, que foi alterado, e o servidor foi redefinido. Eu me conecto manualmente usando 'Site-28', o novo número do site, e ele me mostra estar conectado ao SQL Server com Site-28 \ Admin. No entanto, quando olho para as propriedades do trabalho do agente, ele mostra o proprietário como Site-19 \ Admin, e quando tento procurar usuários para alterá-lo, Site-28 \ Admin não aparece como opção , apenas Site-19 \ Admin. Se eu criar um novo trabalho com este script e alterar manualmente o proprietário para 'Site-28 \ Admin', o novo trabalho será criado com o proprietário 'Site-19 \ Admin'.
Procurando em sys.servers (ou via sp_helpserver), só tenho uma entrada: o nome do computador atual. No entanto, SELECT @@ SERVERNAME retorna o nome da máquina de desenvolvimento original (duas alterações de nome atrás).
Em resumo, não consigo executar este importante trabalho do SQL Server Agent porque ele pertence a um usuário que não existe mais e não consigo descobrir como alterá-lo ou criá-lo como o usuário correto.
fonte
Respostas:
Quando você adicionou o novo nome do servidor usando sp_addserver, lembrou-se de incluir a designação "local". É essa tag que atualiza os metadados para @@ SERVERNAME. Mais Informações.
fonte
@@ServerName
não atualizar até que eu reiniciado SQL ServerEncontrei a resposta ontem com a ajuda de um amigo meu. Eu tive que fazer login via SSMS com um usuário que não fosse o login do Windows que estava tentando usar, excluir o login antigo e adicionar meu login do Windows novamente. Depois disso, consegui transferir a propriedade do trabalho corretamente, o SQL conseguiu obter os dados do usuário do Windows e tudo estava bem com o mundo.
fonte
SELECT 'use ' + DB_NAME(database_id) + ';EXEC sp_changedbowner ''sa'';' FROM sys.databases where DB_NAME(database_id) like 'MyDbs%';
. Depois disso, fui capaz de descartar o logon ruimEu uso o seguinte para identificar problemas e criar as instruções drop e add corretas, se você ficar com tudo OK, não precisará fazer nada, caso contrário, precisará executar os comandos.
fonte
Teve um problema semelhante: alterou o nome do host de um computador em que o SQL Server e o SQL Server Agent estão em execução. Os trabalhos foram atribuídos a. Depois de criar um usuário temporário / logon no SSMS usando esse novo usuário temporário / soltar e criar o nome de login (public e sysadmin privs!) / Redesignar os trabalhos para esse login recriado, tudo estava bem. Talvez você possa manipular uma tabela do sistema para refletir a mesma alteração; mas o método acima não é tão arriscado.
fonte