Eu sei que isso é quase uma duplicata de: O erro "Falha de login para o usuário 'NT AUTHORITY \ IUSR'" no ASP.NET e SQL Server 2008 e o login falhou para o usuário 'nome de usuário' - System.Data.SqlClient.SqlException com LINQ em projeto externo / biblioteca de classe, mas algumas coisas não somam em comparação com outros aplicativos no meu servidor e não tenho certeza por quê.
Caixas em uso:
Web Box
SQL Box
SQL Test Box
Minha aplicação:
Eu tenho um aplicativo da Web ASP.NET, que faz referência a uma biblioteca de classes que usa LINQ-to-SQL. Cadeia de conexão configurada corretamente na biblioteca de classes. De acordo com o Login falhou para o usuário 'username' - System.Data.SqlClient.SqlException com LINQ no projeto externo / biblioteca de classes , também adicionei esta string de conexão ao aplicativo da web.
A string de conexão usa credenciais SQL como tal (no aplicativo da web e na biblioteca de classes):
<add name="Namespace.My.MySettings.ConnectionStringProduction"
connectionString="Data Source=(SQL Test Box);Initial Catalog=(db name);Persist Security Info=True;User ID=ID;Password=Password"
providerName="System.Data.SqlClient" />
Esta conexão foi confirmada como funcionando, adicionando-a ao Server Explorer. Esta é a string de conexão que meu arquivo .dbml está usando.
O problema:
Estou tendo o erro a seguir:
System.Data.SqlClient.SqlException: Login failed for user 'DOMAIN\MACHINENAME$'.
Agora referenciando isso O erro "Falha no login do usuário 'NT AUTHORITY \ IUSR'" no ASP.NET e no SQL Server 2008 diz que esse é realmente o serviço de rede local e o uso de qualquer outro nome que não seja de domínio não funcionará.
Mas estou confuso porque marquei SQL Box e SQL Test Box SQL Management Studio e ambos têm NT AUTHORITY/NETWORK SERVICE
em Segurança -> Logins, no nível do banco de dados, que não está listado em Segurança -> Usuários, mas no nível do banco de dados Segurança -> Usuários Tenho o usuário exibido na string de conexão.
No nível NTFS no servidor web, as permissões têm o SERVIÇO DE REDE tem controle total.
A razão pela qual estou confuso é porque tenho muitos outros aplicativos da Web em meu servidor Web, que fazem referência a bancos de dados no SQL Box e no SQL Test Box, e todos funcionam. Mas não consigo encontrar uma diferença entre eles e meu aplicativo atual, a não ser que estou usando uma biblioteca de classes. Isso vai importar? A verificação de permissões NTFS, a configuração de logins de segurança nos níveis de servidor e bancos de dados, cadeia de caracteres de conexão e método de conexão (credenciais do SQL Server) e pool de aplicativos IIS e outras opções de pasta são todos iguais.
Por que esses aplicativos funcionam sem adicionar o machinename $ às permissões de nenhuma das minhas caixas SQL? Mas é isso que o link está me dizendo para fazer para corrigir esse problema.