Falha ao gerar uma instância de usuário do SQL Server

8

Estou usando o Windows 7 Beta e tentando instalar um aplicativo da web localmente. Este site usa Microsoft SQL Server 2005 Express (SQLEXPRESS) e um arquivo MDB na pasta ~ / App_Data do site. Fui instruído a configurar o IIS7 para usar o Classic .NET AppPool para esse aplicativo da Web.

Cada vez que o site é carregado, recebo o seguinte erro:

There was an error trying to connect to the Database Server: Failed to generate a user instance of SQL Server due to failure in retrieving the user's local application data path. Please make sure the user has a local user profile on the computer. The connection will be closed.

A Internet está repleta de artigos escritos sobre este assunto. A sabedoria predominante parece ser:

  1. Configure o serviço SQL Express para usar a conta Sistema local .
  2. Exclua o seguinte diretório: C: \ Usuários \ nome do usuário \ AppData \ Microsoft \ Microsoft Dados do SQL Server \ SQLEXPRESS

Nenhuma dessas correções causou impacto algum. Eu mexi com permissões e configurações por horas sem sucesso. Alguém pode sugerir uma correção ou me ajudar a entender como obter informações mais detalhadas sobre o problema.

    
por Gabe Sumner 01.05.2009 / 01:27

3 respostas

13

No IIS, no Windows 7, selecione o pool de aplicativos e, em seguida, "configurações avançadas". Em "modelo de processo", ache "Carregar perfil do usuário" e defina como verdadeiro.

O SQL agora deve ser carregado na conta padrão do pool de aplicativos.

    
por 01.06.2009 / 22:48
1

Eu tive os mesmos problemas na minha estação de trabalho, mas nunca em um servidor.

Esta é uma correção temporária que encontrei na Web e parece funcionar:

No tipo de editor de consulta: exec sp_configure 'instâncias do usuário ativadas', 1 então: Reconfigurar

Em seguida, reinicie o banco de dados do SQL Server.

encontrou este link hoje

e depois de uma pesquisa rápida no StackOverflow link

    
por 02.05.2009 / 21:52
1

Brian,

Para que isso faça sentido, em primeiro lugar, dê uma olhada na lista de processos para todos os usuários no Gerenciador de Tarefas.

O w3wp.exe é o novo processo de trabalho da WWW. Ele é executado em uma caixa de proteção de segurança usando as permissões de um usuário chamado DefaultAppPool.

Antigamente, em vez do usuário DefaultAppPool, eles seriam usuários IUSR e IWAM (consulte Quais são as contas IUSR e IWAM no IIS? ).

Quando você usa um provedor de associação SQL, o processo w3wp.exe iniciará uma Instância do Usuário do SQL Server e anexará ao banco de dados especificado na cadeia de conexão, geralmente o App_Data / ASPNETdb.mdf. Executar a instância do usuário do SQL Server requer um perfil local, para que os arquivos temporários tenham um lugar para ir.

Etapas de solução de problemas:

  1. Verifique se o processo w3wp.exe é executado pelo usuário DefaultAppPool.
  2. Verifique se o SQL Server tem instâncias de usuário ativadas (consulte config_value e run_value)
    exec sp_configure 'user instances enabled'
  3. Se não exec %pr_e% , em seguida: reconfigurar
  4. Reinicie o SQL Server, apenas para o caso de o ASPNETdb.mdf estar conectado por uma instância de usuário diferente do SQL Server.
  5. Verifique se o diretório C: \ Users \ DefaultAppPool do perfil de usuário local existe. Caso contrário, ative LocalProfile = True, isso criará o perfil local. Isso é feito no Gerenciador do IIS, nos Pools de Aplicativos, no DefaultAppPool, nas Configurações Avançadas ...
  6. Se você tiver mais problemas com o banco de dados, use o SQL Configuration Manager para se conectar à instância do usuário e ver se o db foi anexado. Você precisa se conectar ao instance_pipe_name correto.
    sp_configure 'user instances enabled', 1
por 19.01.2010 / 04:50