none
erro ao conectar ao sql server 2005 expres RRS feed

  • Pergunta

  • ola galera sou novo nesta forum estou tentando conectar em um banco sql server express e esta dando a seguinte mensagem de erro

    No error message available, result code: DB_E_ERRORSOCCURRED(0x80040E21)


    na hora que vai abrir a conexão.

    segue o codigo para darem uma olhada.

    muito obrigado.

    Marcelo


    public void mConexao(DataGridView Grid, string comando)
    {
                setSql(comando);
                setGrid(Grid);

                //Criando a String de Conexao
                string strcon = @"Provider=SQLOLEDB;Data Source=local;Initial Catalog=banco;Integrated Security=True";
                                       
                //Criando a String de acesso a tabela
                string seltable = getSql();

                //cria a conexão com o banco de dados
                OleDbConnection cn = new OleDbConnection(strcon);


                 E NESTE MOMENTO QUE DA O ERRO
                //abre a conexao
                cn.Open();

                //cria o objeto command para executar a instruçao sql
                OleDbCommand cmd = new OleDbCommand(seltable, cn);

               
                //define o tipo do comando
                cmd.CommandType = CommandType.Text;

                //cria um dataadapter
                OleDbDataAdapter da = new OleDbDataAdapter(cmd);

                //cria um objeto datatable
                DataTable clientes = new DataTable();

                //preenche o datatable via dataadapter
                da.Fill(clientes);

                //atribui o datatable ao datagridview para exibir o resultado
                Grid.DataSource = clientes;
    sábado, 31 de janeiro de 2009 12:41

Respostas

  • Olá Marcelo,

    Esse erro acontece porque você está utilizando um provider OleDb e está definindo o Integrated Security como True, ao invés de informar o provedor de segurança que será utilizado pelo OleDB (SSPI - Security Service Provider Interface).

    Ainda, o OleDb provavelmente não irá conseguir resolver o seu Data Source apenas informando "local". Se você tiver instalado em uma instância padrão, então deverá informar "localhost", ou então "localhost\NomeDaInstancia" que no SQL Express, o padrão é SQLEXPRESS tudo junto.

    Assim, sua string de conexão deveria ficar parecida com essa:

     
     "Provider=SQLOLEDB;Data Source=localhost\SQLExpress;Initial Catalog=banco;Integrated Security=SSPI" 
     

    ---

    No entanto, uma vez que você está conectando em uma banco de dados SQL Server, você não deveria utilizar OleDB... Deveria utilizar o provider .NET de acesso ao SQL Server: O SqlClient.

     
        // Define a string de coneão 
        string connectionString =  
            @"Data Source=(local)\SQLEXPRESS;Initial Catalog=TestDb;Integrated Security=true"
                                
        // Cria a conexão com o banco de dados 
        SqlConnection cn = new SqlConnection(connectionString); 
        using (cn) 
        { 
            // Abre a conexao 
            cn.Open(); 
     
            // Cria o objeto command para executar a instruçao sql 
            SqlCommand cmd = new SqlCommand(...); 
     
            // Cria um DataAdapter 
            SqlDataAdapter da = new SqlDataAdapter(...); 
     
            //... 
        } 
     


    Abraços,
    Caio Proiete


    Caio Proiete
    http://www.caioproiete.com
    domingo, 1 de fevereiro de 2009 15:11
    Moderador

Todas as Respostas

  • Olá Marcelo,

    Esse erro acontece porque você está utilizando um provider OleDb e está definindo o Integrated Security como True, ao invés de informar o provedor de segurança que será utilizado pelo OleDB (SSPI - Security Service Provider Interface).

    Ainda, o OleDb provavelmente não irá conseguir resolver o seu Data Source apenas informando "local". Se você tiver instalado em uma instância padrão, então deverá informar "localhost", ou então "localhost\NomeDaInstancia" que no SQL Express, o padrão é SQLEXPRESS tudo junto.

    Assim, sua string de conexão deveria ficar parecida com essa:

     
     "Provider=SQLOLEDB;Data Source=localhost\SQLExpress;Initial Catalog=banco;Integrated Security=SSPI" 
     

    ---

    No entanto, uma vez que você está conectando em uma banco de dados SQL Server, você não deveria utilizar OleDB... Deveria utilizar o provider .NET de acesso ao SQL Server: O SqlClient.

     
        // Define a string de coneão 
        string connectionString =  
            @"Data Source=(local)\SQLEXPRESS;Initial Catalog=TestDb;Integrated Security=true"
                                
        // Cria a conexão com o banco de dados 
        SqlConnection cn = new SqlConnection(connectionString); 
        using (cn) 
        { 
            // Abre a conexao 
            cn.Open(); 
     
            // Cria o objeto command para executar a instruçao sql 
            SqlCommand cmd = new SqlCommand(...); 
     
            // Cria um DataAdapter 
            SqlDataAdapter da = new SqlDataAdapter(...); 
     
            //... 
        } 
     


    Abraços,
    Caio Proiete


    Caio Proiete
    http://www.caioproiete.com
    domingo, 1 de fevereiro de 2009 15:11
    Moderador
  • Muito obrigado pela dica.

    gostei a resposta foi muito rapida e objetiva.


    Até a proxima


    Marcelo
    terça-feira, 3 de fevereiro de 2009 15:27
  • Olá, apenas complementando, na string de connectionString vc pode buscar direto do config de sua aplicação, para isso basta ter um arquivo app.config para aplicações winform e web.config para aplicações web.

    Exemplo:

    string connectionString = ConfigurationManager.ConnectionStrings["clientesConnectionString"].ConnectionString;

    Att


    NB


    Nelson Borges - Analista de Sistemas
    terça-feira, 3 de fevereiro de 2009 23:25