Как я могу заблокировать базу данных MS-SQL от своих пользователей и при этом получить к ней доступ через ODBC?
У меня есть приложение ms-access, которое обращается к ms-sql db через соединение ODBC. Я пытаюсь заставить своих пользователей обновлять данные только через часть приложения, но мне все равно, будут ли они читать данные напрямую или через свою собственную базу данных ms-access (они используют ее для создания специальных отчетов).
Я ищу способ сделать данные редактируемыми только в том случае, если они используют скомпилированный файл.mde, который я им распространяю. Я знаю, что могу сделать данные доступными только для общего населения и редактировать их для некоторых пользователей.
Есть ли способ заставить ms-sql сделать данные редактируемыми только в том случае, если они обращаются к ним через мой консервированный mde?
Подумал, есть ли способ получить ms-доступ для входа в базу данных от имени другого пользователя (или сменить логин после подключения)?
@Джейк,
Да, он использует формы. Что я хочу сделать, так это просто переключать пользователей один раз, когда у меня появляется всплывающая панель запуска / основного меню.
@Питер,
Это действительно направление, которое я возглавляю. То, что я не определил, было, как перейти к тому второму идентификатору. Я не очень беспокоюсь о том, что пароль будет перехвачен, все пользователи являются внутренними и находятся во внутренней локальной сети. Если они могут прослушать этот пароль, они, безусловно, могут узнать его для моего привилегированного ID.
@ нет вообще
Прямо сейчас его безопасность неизвестностью. Я дал использовать специальный.mdb для составления отчетов, который позволит им читать данные, но не обновлять их. Они не знают о связи с таблицами через соединение ODBC. Чуть более грамотный пользователь ms-access/DB может обойти то, что я сделал за считанные секунды - и есть несколько людей, которые считают себя администраторами баз данных, так что в конце концов они это поймут.
2 ответа
Есть способ сделать это, который эффективен для внутренних пользователей, но может быть взломан. Вы создаете два идентификатора для каждого пользователя. Одним из них является идентификатор отчета, который имеет доступ только для чтения. Это идентификатор, о котором пользователь знает: Fred / mypassword
Второй идентификатор, который может делать обновления. Этот идентификатор Fred_app / mypassword_mangled. Они входят в ваше приложение с Фредом. Когда ваше приложение обращается к данным, оно использует идентификатор приложения.
Это можно понюхать, но для многих приложений этого достаточно.
Позволяет ли приложение обновлять связанные таблицы или оно проходит через формы? Похоже, ваша идея использовать централизованного пользователя с различными ролями - это путь. Да, вы можете менять пользователей, но я могу добавить больше кодирования, и как только вы начнете добавлять все больше и больше кода, другие решения (хранимые процедуры и т. Д.) Могут показаться более привлекательными.