Problema de login do SQL Server 2008 com o aplicativo ASP.NET: falha ao abrir o banco de dados especificado explicitamente

4

Estou executando o SQL Server 2008 Express Edition no Windows Server 2008 com um aplicativo ASP.NET que deve acessar o servidor. O aplicativo ASP.NET está associado a um pool de aplicativos que é executado na conta NetworkService . Essa conta, por sua vez, possui um registro de Login e Usuário no SQL Server no banco de dados necessário. Quando eu tento executar o site do ASP.NET eu recebo uma página em branco e quando visto no log de erro, parece que estou recebendo este registro de evento de informações:

Login failed for user 'NT AUTHORITY\NETWORK SERVICE'. Reason: Failed to open the explicitly specified database. [CLIENT: myLocalMachine]

A string de conexão tem Trusted_Connection=True ; e o banco de dados requerido especificado.

Quando especifico explicitamente o nome de usuário e a senha, recebo outro erro de login informando que a senha está incorreta, embora a mesma combinação de un / pw funcione por meio do SQL Server Management Studio. A conta NETWORK SERVICE parece ter todos os privilégios necessários para o banco de dados. Além disso, fiz um teste do projeto do site ASP.NET que faz uma simples seleção de uma tabela nesse banco de dados, e usando o mesmo arquivo de configuração eu não estou recebendo o erro e parece funcionar.

É algo relacionado a níveis de confiança, pois o aplicativo Web ASP.NET original faz referência a várias DLLs, incluindo bibliotecas de código-fonte aberto. Além disso, o aplicativo não parece ser capaz de gravar no próprio log de eventos, emitindo uma exceção de segurança, mesmo que tudo nos arquivos de configuração, incluindo machine.config, afirme que o aplicativo está em total confiança.

    
por eulerfx 06.07.2009 / 09:29

6 respostas

1

Eu testaria com uma conta explícita que configuraria no computador local e colocaria no aplicativo do IIS como o usuário anônimo. Dessa forma, você pode testá-lo a partir do SSMS ou do VS e ter certeza de que pode se conectar ao servidor e ao banco de dados sem problemas.

Quando isso estiver funcionando, ou se não estiver, você poderá depurar onde, do lado do ASP, ele pode estar falhando. O lado do SQL é simples, embora eu não tenha tentado a conta do Serviço de Rede. Não deve haver motivo para não funcionar, mas não vi ninguém usá-lo.

    
por 07.07.2009 / 18:00
1

Apenas no topo da minha cabeça, o arquivo web.config poderia ser um problema de nível de confiança? Além disso, o SQL Server está no modo de autenticação do Windows ou no modo de autenticação Misto? O SQL Server está configurado para TCP / IP? Eu acho que no SQL Server 2008 TCP / IP está desativado e usa memória compartilhada ou pipes nomeados por padrão.

    
por 21.07.2009 / 20:17
1

Se a instância do banco de dados estiver em um servidor diferente do aplicativo da web, será necessário adicionar um login do SQL para DOMAIN \ WEBSERVER $ e, em seguida, conceder acesso ao banco de dados adequado.

    
por 25.02.2010 / 19:31
1

Para a conta de segurança em questão no SQL Server, o "banco de dados padrão" está definido para o banco de dados apropriado ou ainda está listado como o banco de dados padrão "Principal"? o

    
por 20.01.2011 / 23:16
1

Eu persegui esse erro por uma hora ou mais. Eu tentei muitas coisas, incluindo a configuração do Sql Server, adicionando o usuário do Network Service e outros.

Você precisa ter certeza de que o banco de dados especificado na cadeia de conexão corresponde àquele para o qual você concedeu permissões ao usuário.

No entanto, no final, o problema que tive foi que meu banco de dados na minha string de conexão tinha um erro de digitação - um l e um i foram transpostos, o que era difícil de entender na resolução que eu estava usando.

Portanto, minha sugestão é: encontre outro aplicativo que permita testar uma cadeia de conexão e teste a cadeia de conexão .

    
por 02.02.2012 / 02:22
0

Não é uma resposta, mas possivelmente uma solução alternativa, quando estou conectando ao SQL Server a partir de um aplicativo da Web, sempre uso a autenticação do SQL não integrada. Eu também uso logins SQL diferentes para ler dados e gravar dados, ou seja, quando as páginas têm que gravar dados, eu uso uma conta com acesso de gravação e para todas as outras páginas eu uso uma conta com apenas acesso de leitura. Isso me parece mais seguro e, como posso usar logins diferentes para aplicativos diferentes, posso acompanhar o aplicativo que está usando o banco de dados.

JR

    
por 06.07.2009 / 09:36