TCP / IP соединение - PullRequest
       4

TCP / IP соединение

1 голос
/ 20 января 2011

Я пробовал и искал тысячи раз на других сайтах, но никогда не находил образец или простой код для использования.

Я создал приложение C #, которое использует соединение ODBC, у меня также установлен и настроен MS SQL, чтобы включить удаленный обмен информацией с базами данных. Я хочу сделать свою базу данных доступной для всех, кто использует это приложение, которое я сделал, используя соединение.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace CaseMatter
{

public partial class mainLog : Form
{
    string userID, userName, userAddress, userFName, userLastName, userCity, userPassword, userTele;
    public mainLog()
    {
        InitializeComponent();
        this.Size = new Size(442, 162);

    }


    private void Submitbtn_Click(object sender, EventArgs e)
    {

            string ConnectionString =
              "Data Source=xx.xx.xx.xx,1433;Initial Catalog=master;Integrated Security=SSPI;";

            var conn = new SqlConnection(ConnectionString);
            conn.Open();

            var strSQLCommand = "SELECT Name FROM example WHERE id='1'";
            var command = new SqlCommand(strSQLCommand, conn);
            var reader = command.ExecuteReader();

            while (reader.Read())
            {
                passwordBox.Text = reader.GetString(0);
            }

            reader.Close();
            conn.Close();

    }
}

}

Я только что отредактировал код и попробовал его, я добавил try catch для обработки исключений sql, но он все равно зависает, когда я нажимаю кнопку подтверждения.

Надеюсь, кто-то это выяснит. ОШИБКА: «При установке соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром. Сервер не был найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (Поставщик: Поставщик TCP, ошибка: 0 - не удалось установить соединение, поскольку целевая машина активно отказала ему.) "

Ответы [ 4 ]

2 голосов
/ 20 января 2011

Я подозреваю, что здесь происходит одна из четырех вещей.

  1. Сервер SQL неправильно настроен и не отвечает на соединения tcp. Самый простой способ решить эту проблему - использовать SQL Management Studio для подключения. Если вы не можете подключиться таким образом, вам придется посмотреть на настройку службы сервера SQL. Также убедитесь, что на сервере запущена служба браузера SQL.

  2. Сервер SQL настроен на использование порта TCP, отличного от того, который вы пытаетесь использовать. Удалите «, 1433» из строки подключения и повторите попытку. Браузер SQL должен ответить реальным портом, который прослушивает сервер sql.

  3. В SQL Server установлен межсетевой экран, который блокирует удаленные соединения. Временно отключите брандмауэр и посмотрите, сможете ли вы подключиться. Если можете, настройте брандмауэр правильно и включите его снова.

  4. В вашем локальном ящике установлен брандмауэр определенного типа, который блокирует исходящие соединения через этот порт. Попробуйте выключить свой, чтобы посмотреть, поможет ли это. Если это так, настройте его правильно и включите снова.


Если это совершенно новый sql-сервер, к которому никто не подключался удаленно, то вполне вероятно, что он полностью соответствует конфигурации SQL-сервера или конфигурации Windows.

1 голос
/ 20 января 2011

В вашем примере вы не передаете идентификатор пользователя и пароль. Это только потому, что вы не хотели включать свои учетные данные? Я предполагаю, что не так, как вы правильно XXX из вашего IP-адреса. Я хотел бы начать с предоставления учетных данных учетной записи сервера SQL, которая может обращаться к вашей базе данных.

0 голосов
/ 20 января 2011

Хорошо, это странно проверить, но просто убедитесь, что время и дата точны на клиенте и сервере. SSPI требует максимальный промежуток 5 минут между каждым

0 голосов
/ 20 января 2011

Я заметил, что вы используете SqlConnection, который не является объектом подключения ODBC.С SqlConnection вы фактически подключаетесь через ADO.NET.Синтаксис строки подключения для SqlConnection (ODBC и ADO.NET) можно найти на следующем сайте:

http://connectionstrings.com

Кстати, если вы подключаетесь к SQL2005, строка подключения будет выглядеть так:

using System.Data.SqlClient;

// trusted connection (SQL configured to use your windows ID)
string ConnectionString = 
  "Data Source=xxxxxxx;Initial Catalog=xxxxxx;Integrated Security=SSPI;"

// sql authentication (SQL manages its own users/pwds)
//string ConnectionString = 
  //"Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;"

var conn = new SqlConnection(ConnectionString);
conn.Open();

var strSQLCommand = "SELECT Name from [example_autoincrement] where id='1'";     
var command = new SqlCommand(strSQLCommand, conn);
var reader = command.ExecuteReader();

while (reader.Read())
{   
    passwordBox.Text = reader.GetString(0);
}

reader.Close();
conn.Close();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...