Erro: O provedor SQLOLEDB ignora ou remove espaços à direita da senha no método de abrir a conexão

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: 304310
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sintomas
Se uma senha do Microsoft SQL Server inclui espaços à direita, o provedor OLE DB para SQL Server (SQLOLEDB) ignora ou remove os espaços antes de passar as credenciais ao servidor back-end. Além disso, você pode receber a seguinte mensagem de erro:
Erro em tempo de execução '-2147217843(80040e4d) ':
Falha de logon do usuário 'UserName'.
Esse problema não ocorre com provedor OLE DB para drivers ODBC.
Resolução
Para contornar este problema, usam o provedor OLE DB para ODBC em vez do provedor OLE DB para SQL Server ou não crie senhas com espaços à direita.
Situação
A Microsoft confirmou que este é um bug no Microsoft produtos que estão listados no início deste artigo.
Mais Informações

Etapas para reproduzir o problema

  1. Abra um novo projeto Standard EXE no Microsoft Visual Basic 6.0. O Form1 é criado por padrão.
  2. Definir uma referência ao Microsoft ActiveX Data Objects 2.X.
  3. Copie e cole o código a seguir na janela de código do Form1:

    Observação Você deve alterar usuário ID = <uid> e a senha = < senha de alta segurança > para os valores corretos antes de executar esse código. Certifique-se de que <uid> tenha as permissões apropriadas para executar esta operação no banco de dados.
    Private Sub Form_Load()Dim cn As New ConnectionDim cn2 As New ConnectionDim cn3 As New Connection    cn.Open "Provider=sqloledb;Data source=scout333;" & _     "User ID=<UID>;Password=<strong password>;initial catalog=northwind"On Error Resume Next    cn.Execute "sp_revokedbaccess 'User1'"    cn.Execute "sp_droplogin 'User1'"    On Error GoTo 0    cn.Execute "sp_addlogin 'User1', 'Test   ', 'Northwind'"    cn.Execute "sp_adduser 'User1', 'User1'"    cn2.Open "Provider=MSDASQL;Driver=sql server;" & _     "server=scout333;UID=User1;PWD=Test   ;"    MsgBox "Connection State: " & cn2.State    cn3.Open "Provider=sqloledb;Data source=scout333;" & _     "User ID=User1;Password=Test   ;"End Sub					
  4. Ser-se de que para alterar a seqüência de conexão para o objeto cn para corretamente usa um SQL Server existente fazer logon. Também, altere as seqüências de conexão para os objetos cn2 e cn3 para eles apontam corretamente ao SQL Server.
  5. Execute o código. Quando se conecta a conexão que usa o provedor OLE DB para drivers ODBC, você receber a confirmação desta conexão em uma caixa de mensagem. Esta caixa de mensagem contém um estado de conexão de 1 ( adStateOpen ) se a conexão é feita corretamente.
  6. Clique em OK na caixa de mensagem. O código tenta fazer a conexão usando o provedor OLE DB para SQL Server. Isso falhar com a mensagem de erro mencionadas anteriormente.
Referências
Para obter informações adicionais sobre como abrir ADO conexões, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
168336COMO: Abrir objetos Recordset e Connection do ADO

Propriedades

ID do Artigo: 304310 - Última Revisão: 12/06/2015 04:17:27 - Revisão: 3.0

Microsoft OLE DB Provider for SQL Server 7.0, Microsoft OLE DB Provider for SQL Server 7.01

  • kbnosurvey kbarchive kbmt kbbug kbnofix kbprovider KB304310 KbMtpt
Comentários