Конечные пользователи в моей компании часто используют Microsoft Query (через Excel) для выполнения специальных запросов к выбранным базам данных SQL Server. При переходе к SQL Server 2005 на бэкэнде мы обнаруживаем, что MS Query перечисляет все объекты из всех схем, независимо от того, есть ли у пользователя разрешения на эти объекты или схемы (а у них их нет). Я также пробовал использовать более новые драйверы Native Client (9.0 и 10.0), но получил те же результаты.
Я обнаружил, что пользователи могут выбрать желаемую схему при выборе соединения в Microsoft Query, но, если возможно, я хотел бы скрыть ненужные системные объекты и схемы, чтобы избежать путаницы. Кто-нибудь нашел способ сделать это?
http://support.microsoft.com/kb/2513216 Microsoft винит пользователей? Это известная ошибка в SQL Server, которую Microsoft не решит. Есть много предупреждений об отказе в выборе для общего профиля.
Недавно в базе знаний Microsoft была опубликована статья об этой проблеме: Microsoft Query перечисляет пользовательские объекты и системные представления в мастере запросов..
Нет, я не нашел. Microsoft Query вызывает [базу данных] .sys.sp_tables, которая, в свою очередь, извлекает данные из sys.all_objects и sys.all_columns, чтобы получить информацию о таблице / представлении для представления пользователю. Вы не можете запретить выполнение sp_tables (хорошо, вы можете, но на уровне сервера), поэтому мой вывод всегда был «вам не повезло» ...
Пользователи должны иметь возможность видеть только те объекты, к которым у них есть доступ. Это часть новой модели безопасности SQL Server 2005 и выше. Убедитесь, что у пользователей нет прав на эти объекты через публичную роль. Могут ли они видеть объекты через SQL Server Management Studio?
Я согласен. Я обнаружил, что в Excel 2000/2003 (не уверен насчет 2007 года), если вы используете системный DSN ODBC для доступа к sql server 2000, пользователи могут видеть только те объекты, к которым у них есть разрешения. Я проверю SQL Server 2005 с Excel 2007 и обновлю его позже.
DbDefence использует недокументированные функции, чтобы скрыть схему базы данных даже от администратора базы данных. Работает в SQL Server 2005. Также раздают бесплатную версию.
Если вы просто хотите немного скрыть это, вы можете использовать "EXEC sys.sp_MS_marksystemobject"