BANCO SQL SERVER SE PERDE APOS CONSULTA

LUIS2013 04/04/2013 09:15:40
#421499
galera, comecei a estudar c# e já de cara apareceu um belo problema.
criei o banco no sql server 2008, tudo certinho bacana.
fiz testes de conexao com vb6 e funcionou 100%
parti para c#
usei o seguinte codigo abaixo para [Ô]brincar[Ô]
  string conexao = [Ô]Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\BANCO\\TESTE.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True[Ô];
SqlConnection conn = new SqlConnection(conexao);
SqlCommand comando = new SqlCommand([Ô]Select COUNT(*) from USUARIO_SISTEMA where usuario = @user and SENHA = @SENHA[Ô], conn);

comando.Parameters.Add([Ô]@user[Ô], SqlDbType.VarChar).Value = textBox1.Text;
comando.Parameters.Add([Ô]@senha[Ô], SqlDbType.VarChar).Value = textBox2.Text;

conn.Open();
int i = (int)comando.ExecuteScalar();
if(i>0)
{
MessageBox.Show([Ô]login e senha encontrados[Ô]);
}
else
{
MessageBox.Show([Ô]usuario ou senha incorreto![Ô]);
}

conn.Close();


o código acima funciona, porém ao tentar novamente da erro, entro no banco para ver a tabela e vem a surpresa, não tenho mais acesso a este banco de dados (acabo tendo que criar o banco novamente), as vezes ele aparece como (suspeito) e outras vezes apenas não libera o [Ô]+[Ô] para expandir.

alguma idéia?
OCELOT 04/04/2013 10:18:27
#421501
Não use o AttachDbFilename e User Instance para conectar, o ideal é você usar o Management Studio para criar o banco de dados diretamente no SQL Server e então se conectar nele
LUIS2013 04/04/2013 10:23:49
#421502
Citação:

:
Não use o AttachDbFilename e User Instance para conectar, o ideal é você usar o Management Studio para criar o banco de dados diretamente no SQL Server e então se conectar nele


entao, estou usando o Management Studio para criar o banco.
como seria esse Instance para conectar?
LUIS2013 04/04/2013 14:28:44
#421518
entao OCELOT, mudei assim
  string conexao = @[Ô]Data Source=.\SQLEXPRESS;Initial Catalog = TESTE; Integrated Security = SSPI;[Ô]; 

funcionou e não deu mais problemas!

quero deixar aberto para que alguém possa explicar ou ter uma teoria do por quê se conectar desta forma:
  string conexao = [Ô]Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\BANCO\\TESTE.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True[Ô]; 

acontece o erro no banco de dados.
OCELOT 04/04/2013 17:29:39
#421524
é o seguinte, quando você cria o banco de dados pelo Management Studio ele já é anexado ao SQL Server automaticamente.

Quando você se conecta usando o AttachDbFilename o que acontece é que o SQL Server vai anexar o arquivo informado temporariamente em uma nova instancia do usuário do SQL Express, então quando você abre o Management Studio e tenta ver o arquivo que você conectou pelo AttachDbFilename é como se dois servidores do SQL Server tentassem acessar o mesmo arquivo de banco de dados ao mesmo tempo, então provavelmente o segundo que tenta acessar não consegue pois o arquivo já está em uso.

Essa opção do AttachDbFilename serve apenas para quando o arquivo mdf não está anexado no SQL Server, funciona apenas com o SQL Express e apenas para conexões locais, é algo mais para tentar facilitar o desenvolvimento que na minha opinião mais atrapalha do que ajuda.

FELLIPEASSIS 05/04/2013 17:22:13
#421579
tem esse site cara dê uma olhada , http://www.connectionstrings.com/
tem conexao ate para servidores remotos e locais, vale a pena conferir e esta faltando o datareader para verificar a tabela no banco
dê uma olhada na net ou aq no forum que tem codigo pronto para logins abç...
Faça seu login para responder