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