#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 приведенный выше код работает правильно.