При работе с базами данных в среде Delphi часто возникает необходимость сохранения параметров подключения, в том числе и паролей. Однако, при использовании провайдера SQL Server Native Client 10.0, может возникнуть проблема с сохранением пароля в строке подключения. В данной статье мы рассмотрим, как решить эту проблему.
Описание проблемы
Функция PromptDataSource в Delphi используется для настройки соединения с базой данных пользователем. Однако при использовании провайдера SQL Server Native Client 10.0 возникает проблема с сохранением пароля. При этом в возвращаемой строке подключения параметр Persist Security Info устанавливается в значение False, и пароль из строки исключается.
Пользователь в комментариях предложил использовать интерфейс IBPromptInitialize для ограничения выбора провайдера только SQLOLEDB, что может быть workaround. Однако, для сохранения функциональности использования SQL Server Native Client, можно использовать следующий подход:
После заполнения диалога данных, перейдите на последнюю вкладку "All" в свойствах диалога.
Установите свойство "Extended properties" в значение, включающее параметр Trusted_Connection=no;Server=..........;Database=..... и установите Persist Security Info в значение True.
Используйте следующий код на Object Pascal для обработки строки подключения после её генерации PromptDataSource:
ConnectionString := PromptDataSource(Application.Handle, ConnectionString);
if ContainsText(ConnectionString, 'SQLNCLI10') or ContainsText(ConnectionString, 'SQLNCLI11') then
begin
ConnectionString := StringReplace(ConnectionString, 'Integrated Security=""', '', [rfReplaceAll, rfIgnoreCase]);
end;
Этот код уберет некорректный параметр Integrated Security для провайдера SQL Server Native Client.
Важное примечание
Обратите внимание, что некоторые пользователи сообщают, что Microsoft намеренно не исправляет эту проблему, и это может быть связано с политикой "сломано по умолчанию" компании.
Заключение
В данной статье мы рассмотрели проблему сохранения пароля в строке подключения для SQL Server Native Client 10.0 в Delphi и предложили возможное решение. Надеемся, что предоставленная информация окажется полезной для разработчиков, сталкивающихся с подобными проблемами.
Как сохранить пароль в строке подключения для SQL Server Native Client 10.0 при работе с Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS