2016-10-25 4 views
1

мне нужно изменить пароль доступа к базе данных программно, и я использую этот код (упрощенный), например:Как избежать нового пароля базы данных Microsoft Access при его программном изменении?

Dim adoCn As ADODB.Connection 
Set adoCn = New ADODB.Connection 
adoCn.Mode = adModeShareExclusive 
adoCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb";JET OLEDB:Database Password=TEST;" 
adoCn.Execute "ALTER DATABASE PASSWORD [email protected] TEST;" 
adoCn.Close 

Это падения на Execute линии с Automation error - Unspecified error.

После небольшого тестирования можно использовать только символы £ и _ в качестве любого другого символа - $%^& *() +?! @ - выдает ошибку.

Есть ли способ избежать пароля, чтобы он мог принимать другие символы? Я пробовал как «p @ ssword», так и [p @ ssword], но не работает.

ответ

3

В Jet SQL символ серьезного акцента может использоваться как идентификатор escape или цитата вокруг имен таблиц, полей, возможно даже пользователей и групп, но он также работает для паролей в операциях SQL ALTER DATABASE PASSWORD.

ALTER DATABASE PASSWORD `[email protected]#$%^&*(` NULL 

Мы привыкаем к кронштейну [] процитировать, но довольно много SQL диалекты довольны, предпочитают или даже требуют апостроф. Я думаю, что SQL-файл установщика SQL - это тот, который требует его и не принимает скобки.