Alterar usuário do SQL Server SID

3

Eu tenho o SQL Server 2012 e estou usando usuários de domínio (do Active Directory). Por engano, os usuários foram excluídos do AD, criados com logins e senhas idênticos (mas com SIDs diferentes), excluídos e restaurados os originais - no final, usuários antigos com SIDs antigos eram recriados.

Quase tudo parece estar bem novamente, exceto por um usuário. O SQL Server de alguma forma ficou com o SID errado para um usuário (todos os outros usuários estão bem) e não está obtendo o SID correto do AD. Eu verifiquei SID em ambos os lugares - SIDs no AD não é o mesmo que no SQL Server.

Como resultado desta "incompatibilidade de SID", este usuário não pode acessar o banco de dados. Se tentar, falha e fica:

  • "Erro: 18456, Gravidade: 14, Estado: 5".
  • Falha no login do usuário 'DomainX \ UserX'. Razão: não foi possível encontrar um login que corresponda ao nome fornecido.

Eu apaguei o usuário do servidor e todos os bancos de dados que foram usados, então adicionei - e novamente tive o SID errado! E esse "novo" usuário ainda não consegue se conectar ao banco de dados.

Há duas coisas que "mói minhas engrenagens":

  1. como os SIDs de outros usuários são compatíveis e incompatíveis para apenas um?
  2. se outros usuários estiverem bem (eles têm SIDs antigos), posso supor que não há problemas no controlador de domínio?

Eu tenho encontrado muito sobre diferentes manipulações com dois logins de usuários existentes (ou órfãos?), mas não consegui encontrar apenas a mudança do SID.

Mas a questão principal é - como alterar o SID de um usuário no MS SQL Server (versão 11.0.)? Isso é possível?

UPDATE
Enquanto continuo pensando nisso, percebi que tenho uma pergunta errada. Como esse UserX é um usuário de domínio, não é um usuário local do SQL Server - isso significa que não posso alterar o SID diretamente no SQL Server.

Eu tenho dois servidores idênticos (ServerA e ServerB) que usam os mesmos usuários do AD. No ServerB, o UserX tem o SID correto e pode se autenticar normalmente no SQL Server (o SID correto significa o mesmo que no AD). Para ser claro - o UserX tem um SID errado no ServerA.

Pergunta - se esse usuário é usuário de domínio do Active Directory, onde e como altera seu SID? Se o UserX puder autenticar no ServerB, isso significa que o SID deve ser alterado no ServerA dentro dos Usuários do Windows?

Por favor corrija-me, se algumas ideias ou ideias tiverem seguido caminhos errados.

UPDATE 2
Eu encontrei uma solução para o meu problema, embora não tenha respondido a pergunta. Para qualquer pessoa interessada - minhas faculdades encontraram usuários deletados com o SID errado no AD. Esse usuário foi renovado e agora no AD ambos os usuários estão ativos - o bom e o ruim . Os usuários reconhecidos do SQL Server e o problema com o login do usuário e a incompatibilidade de SID de alguma forma se resolveram - o UserX no ServerA agora tem direito SID e pode acessar o banco de dados. Agora tudo funciona como deveria ser! :)

    
por Kristaps Vilerts 30.03.2016 / 18:52

2 respostas

1

Você tentou verificar usuários órfãos emitindo o seguinte comando:

sp_changes_users_login 'Report' 

(no banco de dados master do SQL Server afetado e no database_in_question no servidor afetado.)

Se você tiver usuários órfãos, poderá emitir um:

sp_change_users_login 'Update_one', 'Domain\UserX', 'Domain\UserX'

... contra o banco de dados afetado ou se o Login do SQL for mapeado para um usuário do banco de dados a:

sp_change_users_login 'Update_one', 'UserX', 'Domain\UserX'

para corrigir a incompatibilidade de SID.

Sintaxe de sp_change_users_login no site da Microsoft.

    
por 31.03.2016 / 10:08
1

Eu tive uma situação semelhante com uma incompatibilidade de usuário e SID do AD excluída. Para mim, o problema era o cache SID local e a solução era seguir a solução alternativa no link abaixo no servidor SQL e no PC do cliente.

link

  1. Open Registry Editor. To do this in Windows XP or in Windows Server 2003, click Start, click Run, >type regedit, and then click OK.

    To do this in Windows Vista and newer, Click Start, type regedit in the >Start Search box, and then press ENTER.

  2. Locate and then right-click the following registry subkey: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa>

  3. Point to New, and then click DWORD Value.

  4. Type LsaLookupCacheMaxSize, and then press ENTER.

  5. Right-click LsaLookupCacheMaxSize, and then click Modify.

  6. In the Value data box, type 0, and then click OK.

  7. Exit Registry Editor.

Opcionalmente, depois disso, clique com o botão direito do mouse no LWLookupCacheMaxSize DWORD que você criou e exclua.

    
por 06.12.2017 / 19:46