从Microsoft Query隐藏SQL Server 2005系统对象/架构

我公司的最终用户经常使用Microsoft Query(通过Excel)对选定的SQL Server数据库执行临时查询。 当我们转移到后端的SQL Server 2005时,我们发现MS Query列出了所有模式的所有对象,而不pipe用户是否具有这些对象或模式的权限(他们不这样做)。 我也尝试使用较新的本机客户端驱动程序(9.0和10.0),但收到相同的结果。

我发现用户可以在Microsoft Query中select连接时select他们想要的模式,但是如果可能的话,我想隐藏不必要的系统对象和模式以避免混淆。 有没有人发现了一种方法来做到这一点?

最近在Microsoft的KB上发布了关于此问题的文章: Microsoft Query在查询向导中列出了用户对象和系统视图 。

http://support.microsoft.com/kb/2513216微软指责用户? 这是微软无法解决的SQL Server中的一个已知错误。 有关公开个人资料的拒绝的许多警告。

不,我找不到。 Microsoft Query会调用[数据库] .sys.sp_tables,该数据库又会从sys.all_objects和sys.all_columns中抽取以获取表/视图信息以呈现给用户。 你不能拒绝执行sp_tables(好吧,你可以,但在服务器级别),所以我对这个结论一直是“你运气不好”…

用户应该只能看到他们有权访问的对象。 这是SQL Server 2005及更高版本的新安全模型的一部分。 通过公共angular色检查用户是否拥有这些对象的权限。 他们可以通过SQL Server Management Studio查看对象吗?

我同意。 我发现在Excel 2000/2003(不确定大约2007年),如果您使用ODBC系统DSN访问SQL Server 2000用户只能看到他们有权限的对象。 我将检查SQL Server 2005 w / Excel 2007并稍后更新。

DbDefence使用未公开的function甚至从DBA隐藏数据库模式。 在SQL Server 2005中工作。他们也赠送免费版本。

如果你只是想稍微隐藏你可以使用“EXEC sys.sp_MS_marksystemobject”