Fiz um backup de nosso banco de dados de produção e o restaurei para os ambientes de teste e desenvolvimento ontem à noite, mas esta manhã um único usuário não conseguiu fazer login nos bancos de dados de teste/desenvolvimento. Posso entrar no SSMS e conectar-me ao SQL Server com o usuário, mas quando tento conectar-me aos bancos de dados específicos, recebo um erro de falha de login 4064. As credenciais devem estar corretas, pois posso me virar e fazer login na produção e executar consultas sem problemas. Comparei os dois conjuntos de permissões e não vi nenhuma diferença entre prod e dev/test. Ambos têm permissão de "conectar" ao esquema do banco de dados e fazem parte dos grupos "db_reader" e "db_executor". O que posso estar procurando no sistema de teste/desenvolvimento que está impedindo esse usuário de se conectar ao banco de dados?
relate perguntas
-
SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado
-
Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?
-
Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?
-
Quais são as principais causas de deadlocks e podem ser evitadas?
-
Como determinar se um Índice é necessário ou necessário
Você já tentou executar
EXEC sp_change_users_login @action='Report';
para ver se eles são órfãos para esse banco de dados?Se houver resultado, você pode executar com a opção Auto_Fix para remapear o usuário.
O que está acontecendo é que existem dois lugares onde os userIDs vivem. Um dentro do banco de dados do usuário e outro no mestre. Quando você restaura para testar da produção, o link entre o userID no banco de dados do usuário e o userID no mestre é interrompido. O link é chamado de ID de segurança (SID). Execute o script abaixo no banco de dados que foi restaurado e ele corrigirá automaticamente todos os SIDs quebrados nesse banco de dados.