it-swarm-pt.tech

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

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 Classic .NET AppPool para este aplicativo da web.

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

Ocorreu um erro ao tentar se conectar ao Servidor de Banco de Dados: Falha ao gerar uma instância de usuário do SQL Server devido à falha na recuperação do caminho de dados do aplicativo local do usuário. Certifique-se de que o usuário tenha um perfil de usuário local no computador. A conexão será fechada.

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

  1. Configure o SQL Express Service para usar a conta Sistema Local .
  2. Exclua o seguinte diretório: C:\Users\username\AppData\Microsoft\Microsoft SQL Server Data\SQLEXPRESS

Nenhuma dessas correções teve qualquer impacto. Eu mudei as permissões e configurações por horas, sem sucesso. Alguém pode sugerir uma solução ou me ajudar a entender como obter informações mais detalhadas sobre o problema.

8
Gabe Sumner

Em IIS no Windows 7, selecione o pool de aplicativos e, em seguida, "configurações avançadas". Em "modelo de processo", encontre "Carregar Perfil do Usuário" e defina-o como verdadeiro.

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

13
Ereck Johan

Brian,

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

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, seriam os usuários IUSR e IWAM (consulte Para que servem as contas IUSR e IWAM no IIS? ).

Quando você usa um provedor de associação SQL, o processo w3wp.exe inicia uma instância de usuário do SQL Server e se conecta ao banco de dados especificado na string de conexão, normalmente App_Data/ASPNETdb.mdf. A execução da instância do usuário do SQL Server requer um Perfil Local, para que os arquivos temporários tenham um lugar para onde ir.

Etapas de solução de problemas:

  1. Certifique-se de que o processo w3wp.exe seja executado pelo usuário DefaultAppPool.
  2. Certifique-se de que o SQL Server tenha as instâncias de usuário habilitadas (consulte config_value e run_value)
    exec sp_configure 'user instances enabled'
  3. Caso contrário, exec
    sp_configure 'user instances enabled', 1
    então: Reconfigurar
  4. Reinicie o SQL Server, apenas no caso de ASPNETdb.mdf ser anexado por uma instância de usuário diferente do SQL Server.
  5. Certifique-se de que existe o diretório C:\Users\DefaultAppPool do perfil de usuário local. Caso contrário, ative LocalProfile = True, isso criará o perfil local. Isso é feito em IIS Manager, Application Pools, DefaultAppPool, Advanced Settings ...
  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 banco de dados foi anexado. Você precisa se conectar ao instance_pipe_name correto.
    SELECT 
    owning_principal_name, instance_pipe_name, heart_beat
    FROM
    sys.dm_os_child_instances
    
1
teyc

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

Esta é uma correção temporária que encontrei há algum tempo na web e parece funcionar:

No editor de consulta, digite: exec sp_configure 'instâncias de usuário habilitadas', 1 então: Reconfigure

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

encontrei isto link hoje

e depois de uma pesquisa rápida no StackOverflow https://stackoverflow.com/questions/281500/error-failed-to-generate-a-user-instance-of-sql-server

1
Brian Boatright