如何使MS Query(在Excel中)在SQL Server 2005或更高版本上查看具有字段级安全性的表?

当通过ODBC数据源连接到SQL Server时,MS Query使用系统过程“sp_tables”检索数据库中的表列表。 sp_tables的来源可以查看但不能更改。 此过程的问题是,它不会返回连接的用户有权访问某些列的表名称。 它只返回连接用户具有完整SELECT访问权的表。

我们正在使用数据库angular色,并在数据仓库中明确授予对表的访问权限。 我们有一个将安全性build立到现场级的模型,但由于上述问题,无法启用它。 大多数用户都通过MS Query和Excel访问,因为每个人都有MS Office,并且我们已经对其进行了培训。

由于许多报告都是围绕此产品而build立的,因此将用户迁移到其他产品目前不是一种select。

一个build议是创build只有可用列的视图,并授予select这些视图。 这是行得通的,但是1)将打破现场级访问的目的,并且不会离我们目前的“解决scheme”太远,2)需要再培训用户使用新视图而不是他们所在的表习惯于。