Подключение к базе данных с c# с помощью PowerBuilder 12.5 с определенным портом

#c# #ado.net #connection #port #powerbuilder

Вопрос:

Кто-нибудь знает, как подключиться к базе данных SQL Server с помощью PowerBuilder 12.5 с определенным портом SQL Server?

Соединение с помощью native SqlConnection (конечно) работает, но мне нужно создать соединение с базой данных с помощью Sybase/Powerbuilder.

В проектах .NET C# используются всего четыре dll из Sybase:

 Sybase.DataWindow.Common
Sybase.DataWindow.Core
Sybase.DataWindow.Shared
Sybase.DataWindow.WPF
 

Используемый код (.net framework 4.0):

 var dwSQLCA = new Sybase.DataWindow.Shared.DWTransaction();
dwSQLCA.Dbms = "ADO.Net";
var parms = new List<string>();
//parms.Add("DecimalSeparator='.'");
//parms.Add("DisableBind=1");

parms.Add($"Namespace='System.Data.SqlClient'");
parms.Add($"DataSource='{srvNameWithPort}'");
parms.Add($"Database='{dbName}'");
parms.Add($"TimeOut=15");
parms.Add("CommandTimeOut=3600");
if (pf.WinAuth)
{
    parms.Add("TrustedConnection=1");
}
else
{
    dwSQLCA.UserId = dbi.UserLogin;
    dwSQLCA.Password = dbi.Pwd;
}
//dwSQLCA.AutoCommit = true;
dwSQLCA.DBParm = string.Join(",", parms);
dwSQLCA.Connect();
 

Переменная srvNameWithPort содержит сервер с портом в стандартном формате server,port_number .

Это заканчивается этим исключением:

Индекс #0 Источник: Поставщик данных .Net SqlClient Сообщение: При установлении соединения с SQL Server произошла ошибка, связанная с сетью или конкретным экземпляром. Сервер не был найден или был недоступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен на разрешение удаленных подключений. (поставщик: Поставщик именованных каналов, ошибка: 40 — Не удалось открыть соединение с SQL Server) Номер: 5 Состояние: 0

Я не могу найти способ установить определенный порт SQL Server, если я использую библиотеку Sybase/Powerbuilder 12.5.

Ни server,3345 то, ни другое, ни server:3345 работа.

Приведенный выше код работает, если порт сервера не указан.

Спасибо, мы ценим любую помощь.

Комментарии:

1. Может быть полезно следующее: docs.microsoft.com/en-us/troubleshoot/sql/connect/… . Согласно docs.appeon.com/pb2019/connection_reference/… , «настройка имени сервера эквивалентна настройке источника данных». См. также: docs.appeon.com/pb2019r2/connecting_to_your_database/… , . Попробуй DataSource=tcp:serverName, 3345

2. Вы также можете захотеть протестировать, используя «Имя сервера» вместо «Источник данных».

3. Спасибо за ответы, использование «имя_сервера» заканчивается исключением «Источник данных не указан». Использование «Источник данных=tcp:имя_сервера, 3345» не помогает. Я протестировал подключение к sql — серверу в SSMS-sql server работает с собственным подключением, но не через Sybase/Powerbuilder.

Ответ №1:

После дальнейшего расследования я обнаружил, что проблема в Powerbuilder версии 12.5. В Powerbuilder 2019 приведенный выше код работает правильно.