ligar à base de dados c#

Estou a tentar ligar-me a um DB num servidor usando C#, mas sem sorte.

tentei usar isto:

public static string m_ConnectionString =
    @"Network Library=dbmssocn; Data Source=*server ip*,*port*; database=*db name*; " +
    @"User id=*db username*; Password=*db pass*;";
public static SqlConnection myConnection = new SqlConnection(m_ConnectionString);

eu entendo este erro:

O Tempo-Limite Da Ligação Expirou. O tempo-limite decorrido a tentar consumir a confirmação do aperto de mão pré-login. Presente pode ser porque o aperto de mão pré-autenticação falhou ou o servidor foi incapaz de responder no tempo. A duração gasta ao tentar para se conectar a este servidor foi - [pré-Login] inicialização = 9343; aperto de mão=5654;

Quando eu usei myConnection.Open();

eu também tentei definir o tempo limite para {[[2]} e não funcionou.

Author: Olivier Jacot-Descombes, 2013-09-02

2 answers

Uma fonte muito boa para o servidor SQL (e muitas outras) é http://www.connectionstrings.com/sql-server / . dependendo se está a ligar-se através de ODBC, OLE DB ou cliente nativo, terá de escolher outro texto de ligação.

Tenta

Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;

Ou

Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;

Existem muitas opções para escolher, dependendo da versão exacta do servidor SQL, o tipo de segurança e muitas mais.


Actualizar

Primeiro Tu. tem que escolher uma tecnologia de acesso de dados.

  • Fornecedor de dados de Framework. NET para o servidor SQL (SqlConnection), é a forma preferida de acessar o servidor SQL a partir do Código.net. (Ver quando usar o cliente nativo de SQL para uma comparação)

  • Cliente nativo : é uma maneira muito rápida de acessar o servidor SQL e suporta as novas funcionalidades, uma vez que ele acede ao protocolo TDS do servidor SQL diretamente e funciona para o código não.net. Deve ser Código non. net .

  • ODBC : é relativamente rápido e compatível com várias bases de dados diferentes. Escolha este se o tipo de base de dados pode mudar no futuro ou se você está acessando bases de dados "exóticas".

  • OLEDB : para o servidor SQL é relativamente lento e será depreciado pela Microsoft.

Depois terá de escolher entre a autenticação do servidor SQL (utilizador/Senha) e janelas Authentication . Eu escolheria esta última, se possível. Com a autenticação do Windows, o SQL-Server assume que, se você se conectar com sucesso ao Windows, você é um usuário confiável. O nome de usuário do Windows será então mapeado de 1 a 1 para um usuário do servidor SQL. Claro que este usuário ainda deve ter sido concedido os direitos solicitados para as operações que ele irá realizar no servidor SQL (como Selecionar, Inserir, atualizar, excluir). Se o DBA não instalou a autenticação do Windows, terá de ir com uid/pwd.

Isto funcionou comigo.
string connectionString =
    "Data Source=192.168.123.45;Initial Catalog=MyDatabase;Integrated Security=SSPI;";
using (SqlConnection connection = new SqlConnection(connectionString)) {
    using (SqlCommand command = new SqlCommand(
                 "SELECT Region FROM dbo.tlkpRegion WHERE RegionID=30", connection)) {
        connection.Open();
        string result = (string)command.ExecuteScalar();
        MessageBox.Show("Region = " + result);
    }
}
 11
Author: Olivier Jacot-Descombes, 2017-08-31 21:14:22

Eu acho que Data Source=*server ip*,*port*; deve ser Data Source=*server ip*:*port*;, substituindo , por :. Mas se o porto não for específico, acho que não precisas dele. Também não estás a definir um condutor, não sei se isto funciona sem ele.

Também um conselho: olha para cima LINQ to SQL ou ADO.NET Entity Data Model. Aqueles podem realmente simplificar o uso de bases de dados e usando LINQ você pode escrever uma consulta dentro do código que é muito semelhante ao sql e Visual Studio também ajuda com intellisense para que você não tem que lembrar toda a tabela e coluna nome.

 1
Author: Marko Grešak, 2013-09-01 20:10:32