2017-01-19 14 views
3

В моем приложении Delphi 7 можно построить подключения к серверу sql и сохранить строки подключения в файле конфигурации.
Это всегда работало без каких-либо проблем уже много лет.PromptDataSource в Delphi 7 дает разные результаты, которые он сделал до

Код для построения строки соединения заключается в следующем:

procedure TDataModuleMain.GetADOProviderString; 
var 
    ConnectionString : string; 
begin 
    ConnectionString := PromptDataSource(Application.MainForm.Handle, cdsConnectionsADOConnectionString.AsString); 

    if ConnectionString <> cdsConnectionsADOConnectionString.AsString then 
    begin 
    if not (cdsConnectionsADO.State in [dsEdit, dsInsert]) then 
     cdsConnectionsADO.Edit; 
    cdsConnectionsADOConnectionString.AsString := ConnectionString; 
    end; 
end; 

PromptDataSource является функцией от ADODB.pas и она воспитывает Microsoft datalink property window и после настройки соединения ConnectionString возвращается.

В прошлом мне удалось снять отметку Blank password и проверить Allow saving password, а пароль и security info=true присутствовали в возвращаемом соединении.
Но это изменилось некоторое время назад, не уверен, когда. Функция теперь никогда не возвращает пароль и больше не содержит информацию о безопасности = true. В результате эти флажки всегда возвращаются назад, и пароль всегда пуст, как на этом скриншоте: enter image description here

Я подозреваю, что некоторые обновления для Windows сделали это для меня, или это может быть что-то еще?
Я надеюсь, что кто-то столкнулся с этим и имеет решение для этого.

EDIT 1
Это возникает проблема возникает только тогда, когда я выбираю SQL Server Native Client 11.0 в качестве поставщика. Когда я выбираю Microsoft OLE DB Provider for SQL Server, проблем нет, и все работает нормально.
Есть ли способ заставить Собственного клиента вести себя и вернуть желаемую строку соединения? ОС я тестирование на это для Windows 8.1

EDIT 2
Я попытался установить данные свойства настойчивой безопасности = True, как предложено в комментариях, но опять-таки это получает вернулось при использовании собственного клиента, но не при использовании клиент OLE DB

EDIT 3
Я попробовал его, сделав текстовый файл с расширением .udl и двойным щелчком мыши, как это было предложено в комментариях. Результат тот же, он работает для поставщика OLE DB, но не для собственного клиента.

+1

Я думаю, что ваш д отсутствует несколько пунктов, а именно, какая операционная система и какие ADO провайдера вы пользуетесь? – MartynA

+0

@MartynA Я добавил провайдера и ОС в свой вопрос. – GuidoG

+0

https://msdn.microsoft.com/en-us/library/ms130978.aspx – Sami

ответ

2

Ключ Persist Security Info=True (что не рекомендуется по соображениям безопасности). Дело в Native Client 10/11 заключается в том, что любое изменение имени пользователя или пароля в диалоговом окне «Ссылка на данные» будет resetPersist Security Info до False.

Таким образом, вы должны войти на вкладку All после изменить имя пользователя/пароль и изменить Persist Security Info к True. Вам может быть предоставлен информационный диалог, в котором указано, что сохранение незашифрованного пароля не рекомендуется.

enter image description here

+0

Выполнение этого заказа в этом порядке получило трюк, большое спасибо. Диалоговое окно с предупреждением не является проблемой, к которой пользователи уже привыкли. Кроме того, строка соединения хранится в зашифрованном виде в файле конфигурации, поэтому также нет проблем – GuidoG