У меня есть приложение для Windows, которое необходимо интегрировать в существующую базу данных PostgreSQL 8.1. Я использую драйвер OLE из http://www.pgoledb.com/.
Это конкретное приложение пытается загрузить детали каждой таблицы, даже если ему нужен доступ только к одной. Если я не предоставлю пользователю разрешение на выбор из всех этих таблиц, приложение выдает ошибку при попытке загрузить каждую из них. Если я разрешаю пользователю выбирать из всех этих таблиц, приложение загружает все их метаданные очень медленно.
Кажется, я не могу найти способ «спрятать» большинство таблиц, чтобы приложение даже не узнало об их существовании и не пыталось с ними что-либо сделать. Существует ли такая функция / разрешение? Помогло бы создание другой схемы (в настоящее время существует только одна «общедоступная» схема)? Есть ли функция OLE, которая может помочь?
(Заметьте, мне все равно, может ли приложение получить доступ к этим таблицам с точки зрения безопасности, я просто хочу ускорить работу пользователей этого приложения.)
Я думаю, что решение вращается вокруг этого простого вопроса, является ли та таблица, к которой системе Windows нужен доступ, к части существующей системы, к которой другим приложениям нужен доступ? Или это отдельная таблица, которая используется только приложением Windows?
В последнем случае ответом действительно может быть новая схема с одной таблицей.
Если первое, то ключевым моментом являются разрешения. Создайте нового пользователя, от имени которого приложение Windows будет подключаться, а затем предоставьте ему доступ только к этой таблице. Видеть: http://www.postgresql.org/docs/8.4/static/privileges.html