Mensagem de erro "Login failed for user" quando um usuário não tem credenciais administrativas tenta obter acesso a uma instância do MSDE

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 822502
Sintomas
Se você instalar uma instância do Microsoft SQL Server 2000 Desktop Engine (MSDE) usando uma conta de usuário administrador do Microsoft Windows, um usuário não tem credenciais administrativas não poderá acessar a instância MSDE através do Microsoft Visual Studio 2005 ou Microsoft Visual Studio .NET Server Explorer.

Quando você tenta acessar a instância do MSDE através do Server Explorer, aparece a caixa de diálogo de Logon do SQL Server . Se você selecionar a opção de Usar segurança integrada do Windows NT nesta caixa de diálogo para fazer logon na instância do MSDE, você receber a seguinte mensagem de erro:
Falha de logon do usuário ' Domain Name \ User Name '.
Observação Neste exemplo de mensagem de erro, Domain Name e User Name são espaços reservados para o nome de domínio e o nome de usuário da conta de usuário do Windows que você está usando ao tentar acessar a instância do MSDE.
Como Contornar
Para contornar esse problema, você pode conceder direitos de logon para a instância do MSDE para uma conta de usuário do Windows que não possui credenciais administrativas. Em seguida, você pode adicionar esta conta de usuário do Windows ao grupo de administradores do sistema para dar direitos de acesso para bancos de dados do usuário para esta conta de usuário. Para fazer isso, execute as seguintes etapas:
  1. Faça logon no computador que está executando a instância MSDE do Visual Studio 2005 ou Visual Studio. NET. Faça logon como administrador ou como qualquer outro usuário do Windows que tenha credenciais administrativas.
  2. Inicie o Visual Studio .NET ou Visual Studio 2005.
  3. No menu arquivo , aponte para novo e, em seguida, clique em Project .

    A caixa de diálogo New Project é exibida.
  4. Em Project Types , clique em Projetos do Visual Basic .

    Observação No Visual Studio 2005, clique em Visual Basic em Tipos de projeto .
  5. Em modelos , clique em Windows Application e em seguida, clique em OK . Por padrão, Form1.vb é criado.
  6. No menu Exibir , clique em código .
  7. Cole o código a seguir como a primeira linha em Form1.vb:
    Imports System.Data.SqlClient
  8. Cole o seguinte código na definição de classe de Form1 no Form1.vb:
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load        ' Grant logon rights.        RunProc("<Computer Name>", "master", "sp_grantlogin", "@loginame", "<Domain Name>\<User Name>")        ' Add the user account to the System Administrators Group.        RunProc("<Computer Name>", "master", "sp_addsrvrolemember", "@rolename", "sysadmin", "@loginame", _"<Domain Name>\<User Name>")    End Sub    Private Sub RunProc(ByVal HostName As String, ByVal DbName As String, ByVal CmdName As String, ByVal Param1Name _ As String, ByVal Param1Value As Object, Optional ByVal Param2Name As String = vbNullString, Optional ByVal Param2Value _ As Object = Nothing)        Dim cn As New SqlConnection("Data Source=" & HostName & "\vsdotnet;Database=" & DbName &  _ "; Integrated Security=True")        Dim cmd As New SqlCommand(CmdName, cn)        Dim param1 As New SqlParameter(Param1Name, Param1Value)        Dim param2 As New SqlParameter(Param2Name, Param2Value)        ' Open the connection.        cn.Open()        ' Set CommandType to StoredProcedure.        cmd.CommandType = CommandType.StoredProcedure        ' Add parameters.        cmd.Parameters.Add(param1)        If Param2Name <> vbNullString Then            cmd.Parameters.Add(param2)        End If        ' Run the command.        cmd.ExecuteNonQuery()        ' Close the connection.        cn.Close()    End Sub
    Observação substituir < Nome do Computador > no código com o nome do computador que está executando a instância do MSDE. Substituir < Nome do Domínio > e < Nome do Usuário > com o nome de domínio e o nome de usuário da conta de usuário do Windows que você deseja atribuir direitos de acesso para os bancos de dados usuário.
  9. No menu Debug , clique em Iniciar para executar o projeto.
Situação
Esse comportamento é por design.
Mais Informações
Para obter acesso a uma instância do MSDE do Server Explorer, você pode fazer uma das seguintes opções:
  • Fornecer credenciais de usuário do Microsoft SQL Server.
  • Use a opção de Usar segurança integrada do Windows NT para fornecer as credenciais de usuário Windows.
Quando uma instância do MSDE é instalada, os usuários do SQL Server não são criados automaticamente para a instância. Portanto, você só pode usar a opção de Usar segurança integrada do Windows NT logon a instância MSDE do Visual Studio .NET.

Passos para reproduzir o problema

  1. Fazer logon no seu computador usando a conta de administrador ou qualquer outra conta de usuário que tenha credenciais administrativas.
  2. Instale o Visual Studio 2005 ou Visual Studio .NET com o MSDE partir do CD do Visual Studio 2005 ou Visual Studio .NET Installation.
  3. Concluir o processo de instalação para o MSDE instância.
  4. Faça logoff do computador.
  5. Fazer logon no seu computador usando uma conta de usuário do Windows que não possui credenciais administrativas.
  6. Inicie o Visual Studio .NET ou Visual Studio 2005.
  7. No menu Exibir , clique em Server Explorer .
  8. Em Server Explorer, expanda Servers e, em seguida, expanda o nó Computer Name onde o Computer Name é o nome do computador.
  9. Expanda SQL Servers e, em seguida, clique duas vezes \VSDOTNET SQL Server Name onde o SQL Server Name é o nome do computador servidor onde estão os bancos de dados.
  10. Na caixa de diálogo Logon do SQL Server , clique para selecionar a caixa de seleção Usar segurança integrada do Windows NT .
  11. Clique em OK .
Referências
Para obter mais informações, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
316649Como usar o Server Explorer no Visual Studio .NET e Visual Studio 2005

Propriedades

ID do Artigo: 822502 - Última Revisão: 05/02/2006 04:04:38 - Revisão: 2.3

Microsoft Visual Studio 2005 Standard Edition, Microsoft Visual Studio 2005 Professional Edition, Microsoft Visual Studio .NET 2003 Enterprise Architect, Microsoft Visual Studio .NET 2003 Enterprise Developer, Microsoft Visual Studio .NET 2003 Academic Edition, Microsoft Visual Studio .NET 2002 Professional Edition, Microsoft Visual Studio .NET 2002 Enterprise Architect, Microsoft Visual Studio .NET 2002 Enterprise Developer, Microsoft Visual Studio .NET 2002 Academic Edition, Microsoft SQL Server 2000 Desktop Engine (Windows)

  • kbmt kbvs2005applies kbvs2005swept kbsysadmin kbserver kbdatabase kbprb KB822502 KbMtpt
Comentários