Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

brunoguitarman

Problemas ao tentar conexão com banco de dados

Recommended Posts

Pessoal, estou com alguns problemas de acesso a banco de dados.

 

Estou usando o Visual Studio 2010 Express e o SQL Server 2008 R2 Express.

 

Não consigo acessar o banco usando nome de usuário e senha quando crio um código do tipo:

 


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.Sql;
using System.Data.SqlClient;

namespace ConsoleApplication1
{
   class Program
   {
       static void Main(string[] args)
       {

           SqlConnectionStringBuilder connectionStringBuilder = new SqlConnectionStringBuilder();
           connectionStringBuilder.DataSource = @".\SQLEXPRESS";
           connectionStringBuilder.InitialCatalog = @"D:\LocalHost\SQLSERVERDATA\TesteDB.mdf";
           //connectionStringBuilder.IntegratedSecurity = true;
           connectionStringBuilder.UserID = "TesteDBUser";
           connectionStringBuilder.Password = "p@ssword";
           connectionStringBuilder.UserInstance = false;

           using (SqlConnection conexao = new SqlConnection(connectionStringBuilder.ConnectionString))
           {
               try
               {
                   conexao.Open();
                   Console.WriteLine("Conexão realizada com sucesso!\n\n");
               }
               catch (Exception exp)
               {
                   Console.WriteLine(exp.Message);
               }
           }
       }
   }
}

 

Esse problema ocorre mesmo que eu tenha dado um grant para o usuário ou mesmo ele seja o dbowner. A mensagem é "Login failed for user 'TesteDBUser'". Agora, se uso "connectionStringBuilder.IntegratedSecurity = true;" ele funciona sem problemas. Havia instalado o SQL Server com autenticação pelo windows, mas depois modifiquei seguindo este tutorial http://sqlfromhell.wordpress.com/2009/05/24/habilitando-sql-authentication-e-o-usuario-sa/ mas tenho esse problema, mesmo que eu consiga logar no SQL Server com tal usuário.

Compartilhar este post


Link para o post
Compartilhar em outros sites

consegues logar com TesteDBUser no Management Studio???

 

Consigo sim.

 

Pessoal, me ajudem aqui a desenvolver o raciocíneo:

 

Isso tudo até o momento estava usando no meu pc no qual tenho uma conta como administrador e outra como usuário comum, por motivos de segurança. Para facilitar a vida e não me prender a permissões instalei o windows 7 na virtual box da oracle para executar tudo como admin sem problemas.

 

No momento da instalação do SQL Server ao invés de selecionar "Named Instance" escolhi "Default Instance" dentro da máquina virtual. Pelo que me parece isso não chega a fazer grande diferença, mas ajudou a ter o insight para chegar a uma solução.

 

Tentando usar o próprio visual studio para gerar a conexão pra mim quando tentava usar nome de usuário e senha acabava recebendo a seguinte mensagem: "Failed to generate a user instance of sql server. Only an integrated connection can generate a user instance. The connection will be closed." Até o momento não havia entendido muito bem o que era o user instance, mas pelo jeito só permite o uso para usuários do pc, então usuários do SQL Server que não tenham correspondente conta no pc estão fora. Inclusive li em alguns lugares que em breve user instances não serão mais utilizados.

 

Indo além, acabei "meio sem querer" entrando no Connect to Database do Web Developer 2010 Express (Tools -> Connect to Database) e lá dentro dentre outras opções, algumas que não aparecem Visual C# por exemplo quando você já está trabalhando dentro de um projeto havia choose data source "microsoft sql server" e "microsoft sql server database file". Pelo que pude perceber a primeira faz uma conexão direta com o SQL usando Initial Catalog para definir o banco, já a outra usa um AttachDbFileName para usando um user instance se conectar diretamente com o arquivo.

 

Dessa forma escolhi a opção "microsoft sql server" e deixando o SQL Server Management Studio aberto no momento ele me mostrou o Data Source disponível que era diferente do até então sempre usado ".\SQLEXPRESS". Esse ".\SQLEXPRESS" é o tal do "Named Instance" usada na instalação do SQL Server no meu PC, que é diferente do "Default" que utilizei na minha máquina virtual. Dessa forma, ao que parece preciso apenas selecionar o "Default", da seguinte forma:

 

connectionStringBuilder.DataSource = "."; ao invés de connectionStringBuilder.DataSource = @".\SQLEXPRESS";

 

e também funciona caso referencie o nome do PC, no caso connectionStringBuilder.DataSource = "BRUNO-PC"; ou mesmo connectionStringBuilder.DataSource = "(local)";

 

E dessa forma ainda posso substituir o connectionStringBuilder.InitialCatalog = @"D:\LocalHost\SQLSERVERDATA\TesteDB.mdf" por simplesmente connectionStringBuilder.InitialCatalog = "TesteDB".

 

 

Caso alguma parte tenha ficado confusa, por favor perguntem. Também espero que aqueles que tenham um melhor entendimento do que ocorreu deixem aqui sua explicação até mesmo para ajudar outros que possam estar passando pelo mesmo problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.