Протестировано Sql соединение через Server Explorer, но не будет подключено во время выполнения - PullRequest
0 голосов
/ 12 марта 2020

Проблема под рукой: Невозможно подключиться к моей sql серверной базе данных с помощью строки подключения, которая работает с инструментами подключения исследователей серверов, но не работает с моим приложением WPF.

Я подключаюсь к sql сервер «US06S-SQLSRV» на порту 49278, имя базы данных «Решения». Я создал приложение, которое должно подключиться к этому серверу, но есть опасение, что сервер может переместиться в будущем, поэтому я пытаюсь динамически изменить эту строку для будущего использования.

Это строка подключения, которая сгенерировано из инструмента подключения: Data Source=US06S-SQLSRV,49278;Initial Catalog=Solutions;Integrated Security=True

Я скопировал эту строку в мой файл App.Config и пытаюсь проверить соединение после входа пользователя в систему следующим образом:

App.Config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <connectionStrings>
    <clear/>
<add name ="DatabaseConnStringSO"
         connectionString ="Data Source=US06S-SQLSRV,49278;Initial Catalog=Solutions;Integrated Security=True"/>
  </connectionStrings>
</configuration>

DatabaseHelper.CS

public static string sql;
public static SqlConnection conn = new SqlConnection();
public static SqlCommand cmd = new SqlCommand(sql, conn);
public static SqlDataReader reader;
public static SqlDataAdapter sqlDataAdapter;
public static string DataSource = @"US06S-SQLSRV";

public static string GetConnectionStrings(string Name)
        {
            string strConnx = ConfigurationManager.ConnectionStrings[Name].ToString();

            return strConnx;
        }

public static void OpenConnection()
        {
            try
            {
                if (conn.State == ConnectionState.Closed)
                {
                    conn.ConnectionString = GetConnectionStrings("DatabaseConnStringSO");
                    conn.Open();
                    MessageBox.Show("Solutions Database connection successful press 'OK' to proceed.", "Successful connection", MessageBoxButton.OK, MessageBoxImage.Exclamation);

                }
            }
            //+Environment.NewLine + "Description: " + Exception.Message.ToString()
            catch (Exception ex)
            {

                MessageBox.Show("Solutions Database ( " + DataSource + " connection unsuccessful, please seak a MFG personnel to assist in addressing this issue via the configuration window."
                   + Environment.NewLine + "Description: " + ex.Message.ToString(), "Unsucessful database connnection, error: 100",
                    MessageBoxButton.OK, MessageBoxImage.Error);

            }
        }

Это ошибка, которую я получаю:

System.Data.SqlClient.SqlException: 'A Ошибка c, связанная с сетью или спецификацией экземпляра, произошла при установлении соединения с SQL Сервером. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Сервер настроен для разрешения удаленных подключений. (поставщик: поставщик TCP, ошибка: 0 - во время поиска в базе данных произошла неустранимая ошибка.) '

Любая помощь будет оценена.

Вещи, которые я пробовал :

  1. Жесткое кодирование строки в командах.
  2. Разрешение портов через правила брандмауэра
  3. Проверка возможности доступа к серверу через Sql Студия управления сервером (это относится и к IP-адресу, и к имени сервера)
  4. Использование IP-адреса в строке подключения.
  5. Создание адаптера таблицы с этой базой данных (при попытке предварительного просмотра данных выдается другая ошибка) таким образом, но запросы работают из представления конструктора таблиц.)
  6. Да, адаптер таблицы использует ту же строку подключения.
  7. На сервере включен протокол TCP / IP
  8. Убедитесь, что на сервере включены удаленные подключения

В конце дня я хочу подключиться к этой базе данных с помощью строки Dynami c.

Отредактировано для отображения дальше переменного тока tions: результат Powershell

Test-NetConnection -Порт 49278-Имя_компьютера US08S-SQLSRV

  • Имя_компьютера: US06S-SQLSRV
  • Удаленный адрес: 173.18.167.19
  • RemotePort: 49278
  • Интерфейс Алиас: Ethe rnet 2
  • SourceAddress: 173.18.168.193
  • TcpTestSucceeded: True

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

Пока что кажется, что есть ошибка с библиотекой System.Data.SqlClient для Visual Studio 2019. Я смог выполнить эту задачу с точно таким же кодом в Visual Studio 2017.

0 голосов
/ 12 марта 2020

Интегрированная защита в основном означает, использовать Windows безопасность для входа на сервер sql. Вам следует создать пользователя SQL специально для доступа к нему через вашу программу и создать строку подключения на основе этих значений.

См. здесь , чтобы узнать, как создать строку подключения для ваш SQL сервер.

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