Страницы: 1
RSS
Коннект к защищенной паролем БД Access через PowerQuery, Как правильно задать строку подключения
 

Добрый день, уважаемые форумчане!  Возникла проблема: никак через не удается подключиться к БД Access защищенной паролем через PowerQuery. Через типовое подключение не удается подключиться вовсе, т.к. на этапе подключение ни одно из диалоговых окон не позволяет передать пароль от БД.  Через ODBC удается подключиться к БД и просмотреть ее содержимое, но при попытке перейти к какому либо объекту в панели навигации выдается сообщение об ошибке:

Код
DataSource.Error: ODBC: ERROR [42000] [Microsoft][Драйвер ODBC Microsoft Access] Ошибочный пароль.
Сведения:
    DataSourceKind=Odbc
    DataSourcePath=dbq=M:\Data\Ежедневная отчетность ЦСПКО\Нормирование ОБ\БД\Нормирование ОБ v.1.1c_be.accdb;driver={Microsoft Access Driver (*.mdb, *.accdb)};dsn=MS Access Database;exclusive=0;extendedansisql=1;readonly=1
    OdbcErrors=Table
Изменено: RomanNF - 20.02.2019 17:02:24
 
Сама строка подключения имеет вид:
Код
= Odbc.DataSource("driver={Microsoft Access Driver (*.mdb, *.accdb)};dbq=M:\Data\Ежедневная отчетность ЦСПКО\Нормирование ОБ\БД\Нормирование ОБ v.1.1c_be.accdb;extendedansisql=1;readonly=1;exclusive=0;dsn=MS Access Database", [HierarchicalNavigation=true])

Может кто-нибудь сталкивался с подобной проблемой ранее?

Спасибо!
 
Доброе время суток.
Попробуйте через OleDb, в таком по подключении можно указать пароль в свойствах подключения.
 
Вежливый, однако, ТС пошёл, ни ответа, ни что не так, ни спасибо.
Рабочий вариант под Excel и Access версии 2010. Может кому и пригодится.
Код
let
    connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Path\access.accdb;Mode=Share Deny None;Jet OLEDB:Database Password=123;",
    sql = "Select * From dataTable",
    dataTable = OleDb.DataSource(connStr, [Query=sql])
in
    dataTable
 
Цитата
Андрей VG написал:
Вежливый, однако, ТС
немало таких, которые обращаются как в справочную: окей, гугл. найди мне ответ на мой вопрос.
получили ответ и пропали.
наверное, думают что здесь боты отвечают)
только, наверное, я банкоматам спасибо говорю.
Изменено: artyrH - 22.02.2019 13:59:00
 
Цитата
Андрей VG написал:
Может кому и пригодится.
Вот мне как раз скоро и пригодится.  ;)  Андрею, очередное спасибо!
Изменено: PooHkrd - 22.02.2019 14:00:52
Вот горшок пустой, он предмет простой...
 
Андрей VG, большое спасибо!
 
Цитата
Андрей VG написал:
Database Password=123
А в связи с этим вопрос. А есть ли какой-то способ передать запросу PQ пароль не в открытом виде. Запрос это ж даже не макрос , его сам паролем не защитишь (хотя и эта защита тоже ни о чем, но хоть от совсем оленей сработает).  :( А писать в коде пароль как-то стрёмно.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
А писать в коде пароль как-то стрёмно.
Ну, код можно в принципе защитить от просмотра Protect Power Queries. Естественно, есть и проблемы.
Впрочем все решения, связанные с возможностью наличия IDE и отладки не позволяют иметь 100% защиту. Всегда есть момент, когда данные авторизации на каком-то шаге есть в читаемом текстовом виде.
Допустим. Вы получаете пароль для той базы Access запросом к базе данных MS SQL сервер, авторизируясь  вашей доменной учёткой. Как бы в прямую в тексте кода Power Query в этом случае пароль не виден в коде. Если запрос запустит другой пользователь с другой доменной учёткой, запрос к MS SQL сервер не пройдёт. Но, вы ведь можете чуть реорганизовать код Power Query, чтобы его посмотреть, не так ли? А если это нужно для нескольких пользователей? Где гарантия, что кто-то не преобразует запрос и не подсмотрит этот самый секретный пароль?
Тут путь один, исключить человеческое участие. А вот как. Тут нужно знать детали того, как используются эти запароленные базы Access. Может тут лучше сможет что-то дельное подсказать Михаил.
 
Андрей VG, за ссылку большое спасибо. Хотя толку с неё - с моделькой все равно не поработаешь.
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх