MS Query при подключении к SQL Server через источник данных ODBC использует системную процедуру sp_tables для получения списка таблиц в базе данных.Исходный текст для sp_tables можно просматривать, но не изменять.Проблема этой процедуры заключается в том, что она не возвращает имя таблицы, для которой подключенный пользователь имеет разрешения на доступ только к определенным столбцам.Он возвращает только таблицы, для которых подключенный пользователь имеет полный доступ SELECT.
Мы используем роли базы данных с явно предоставленным доступом к таблицам в нашем хранилище данных.У нас есть модель для обеспечения безопасности вплоть до полевого уровня, но мы не можем включить ее из-за описанной выше проблемы.Большинство пользователей получают доступ через MS Query и Excel, потому что у всех есть MS Office, и мы обучили их его использованию.
Поскольку многие отчеты уже построены вокруг этого продукта, перенос пользователей на другой продукт не является вариантомв настоящее время.
Одним из предложений было создание представлений только с доступными столбцами и предоставление выбора для этих представлений.Это сработало бы, но 1) не использовало бы цель доступа на уровне поля и не слишком далеко от нашего текущего обходного пути; 2) потребовало бы переподготовки пользователей для использования новых представлений вместо таблиц, которыми они являются.привык к.