Eu executei o seguinte:
USE [MyDatabase];
GO
CREATE LOGIN [MyDomain\MyAccount] FROM WINDOWS WITH DEFAULT_DATABASE=[MyDatabase];
CREATE USER [MyDomain\MyAccount] FOR LOGIN [MyDomain\MyAccount];
GRANT EXECUTE ON SCHEMA::[MySchema] TO [MyDomain\MyAccount];
GRANT SELECT ON SCHEMA::[MySchema] TO [MyDomain\MyAccount];
GRANT INSERT ON SCHEMA::[MySchema] TO [MyDomain\MyAccount];
(Não estou concedendo nenhuma função, pois não quero que este login seja capaz de acessar qualquer outro esquema neste banco de dados.)
Eu executo o SSMS como MyDomain\MyAccount (executo como um usuário diferente). Em seguida, tento conectar-me a esta instância. No entanto, estou obtendo:
Não é possível abrir banco de dados padrão do usuário. Falha na autenticação. Falha de login para o usuário
'MyDomain\MyAccount'. (Microsoft SQL Server, erro: 4064)
Obtenho o mesmo resultado se definir o banco de dados padrão como MyDatabase nas Propriedades da conexão.
Eu executei um rastreamento do Profiler e vejo um erro 18456 estado 38:
Falha de login para o usuário 'MyDomain\MyAccount'. Motivo: Falha ao abrir o banco de dados explicitamente especificado 'MyDatabase'. [CLIENTE: MyIpAddress]
Isso é seguido por um erro 18456 estado 40:
Falha de login para o usuário 'MyDomain\MyAccount'. Motivo: Falha ao abrir o banco de dados 'MyDatabase' especificado nas propriedades de login. [CLIENTE: MyIpAddress]
MyDatabase está online e não tenho problemas para me conectar a ele com um login diferente. Que permissão adicional preciso conceder a MyDomain\MyAccount? Há algo mais que estou perdendo?
Acho que você está perdendo a permissão de conexão. Sempre pensei que foi criado com o usuário, mas pode haver condições em que não seja adicionado.
Tente correr
Você também pode tentar alterar o esquema padrão de [MyDomain\MyAccount]
Por fim, você pode usar minhas sp_dbpermissions e sp_srvpermissions para revisar as permissões do usuário.