Tive motivo para alterar o nome do meu computador (está sendo executado em uma máquina virtual). Eu tenho uma instância SQLExpress existente que foi instalada antes da renomeação.
Existem alguns recursos que falham porque novos bancos de dados ainda são criados com o antigo proprietário. Mais especificamente, quando tento criar um novo diagrama de banco de dados, recebo o erro abaixo.
Não foi possível obter informações sobre o grupo/usuário do Windows NT 'OLDNAME\user', código de erro 0x534. (Microsoft SQL Server, Erro: 15404).
Eu usei as seguintes instruções para renomear o servidor:
sp_dropserver 'OLDNAME\SQLEXPRESS';
GO
sp_addserver 'NEWNAME\SQLEXPRESS','local';
GO
-- Restart Server
SELECT @@SERVERNAME; -- NEWNAME\SQLEXPRESS
No entanto, isso não afetou o proprietário padrão para novos bancos de dados. Eles ainda estão sendo criados com o proprietário como OLDNAME\user
, que não existe mais.
Eu sei como alterar o proprietário de um banco de dados existente, após a criação. Mas, como posso fazer com que novos bancos de dados tenham o proprietário correto para começar?
O proprietário padrão será quem cria o banco de dados. No seu caso, parece que você está usando uma conta de computador local como login do Windows para o SQL Server. Portanto, o nome de login está na forma de
OLDNAME\user
; no entanto, você gostaria que novos bancos de dados fossem criados comNEWNAME\user
o proprietário.As alterações nas contas do Windows não são propagadas para o SQL Server, portanto, o nome de logon antigo persistirá até que você o altere manualmente. No entanto, o logon continua funcionando porque o SID é como o SQL Server faz referência a ele ao autenticar a conta.
Para corrigir esse problema, você precisará usar o comando ALTER LOGIN para alterar o nome de login de
OLDNAME\user
paraNEWNAME\user
.Se você precisar alterar o proprietário de um banco de dados existente, poderá usar
ALTER AUTHORIZATION
. Eu recomendaria alterar o proprietário do banco de dados para alguém que não seja um usuário real, como [sa].Outra opção seria usar
EXECUTE AS LOGIN = 'owner_to_be'
, logo antes da instrução a ser executada para criar o banco de dados.