Невозможно подключиться к БД с экземпляром и номером порта - PullRequest
0 голосов
/ 20 декабря 2018

Моя программа на C # пытается подключиться к SQL Server 2008 из среды mono (V4.8.0), используя строку подключения, предоставленную сторонней библиотекой.При этом имя сервера упоминается в форме имя хоста \ экземпляр, порт.Например: «Сервер = 192.168.1.120 \ db2008,5213; База данных = DB_MACHINE; Таймаут соединения = 10; Имя приложения = 192.168.1.13; Идентификатор пользователя = hubuser; Пароль = пароль»

В Моновеб-сайт , упомянуто, что имя сервера базы данных может быть упомянуто этими тремя способами: имя хоста или имя хоста, порт или имя хоста \ экземпляр.

Поскольку я получаю строку подключения из сторонней библиотеки, оченьочень мало шансов изменить это.Есть ли способ в Mono принять строку подключения с именем сервера в форме имя хоста \ экземпляр, порт?Если он уже поддерживается, я прошу людей помочь с подробностями о том, как отладить эту проблему.

Заранее спасибо.

1 Ответ

0 голосов
/ 03 января 2019

Нашел это.Как упомянуто на моно-сайте, источник данных в строке подключения должен иметь указанный формат.Если имя экземпляра указывается вместе с номером порта, имя хоста вместе с именем экземпляра назначается в качестве имени сервера, и соединение не устанавливается.Ниже приведен фрагмент кода из приватного bool ParseDataSource (строка theDataSource, out int thePort, out string theServerName) в mono-mono-4.8.0-branch \ mcs \ class \ System.Data \ System.Data.SqlClient \ SqlConnection.csфайл.

int idx = 0;
if ((idx = theDataSource.IndexOf (',')) > -1) {
    theServerName = theDataSource.Substring (0, idx);
    string p = theDataSource.Substring (idx + 1);
    thePort = Int32.Parse (p);
} else if ((idx = theDataSource.IndexOf ('\\')) > -1) {
    theServerName = theDataSource.Substring (0, idx);
    theInstanceName = theDataSource.Substring (idx + 1);

    // do port discovery via UDP port 1434
    port = DiscoverTcpPortViaSqlMonitor (theServerName, theInstanceName);
    if (port == -1)
        success = false;
} else
    theServerName = theDataSource;

Я не уверен, является ли это ожидаемым протоколом или нет, будет ли обновлен исходный код Mono или нет.Представлена ​​информация о Git.

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