2017-02-16 68 views
3

我正在使用sql服务器,并被要求仅授予查询中涉及的表列。如何在查询中列出列名

所以,让我们假设我有这个查询Q执行的提取:

SELECT 
    A.C1, 
    B.C1, 
    C.C1 
FROM 
    TABLE1 A 
INNER JOIN 
    TABLE2 B ON A.C2 = B.C2 
INNER JOIN 
    TABLE3 C ON B.C3 = C.C2 

我不得不放弃SELECT权限只列:

A.C1 
    A.C2 
    B.C1 
    B.C2 
    B.C3 
    C.C1 
    C.C2 

现在我在一个无聊的人解析方式查询,收集列。

有没有办法,有些系统查询方式,“查询查询”?一种将查询Q置入输入并获取输出中涉及列的列表的方法?

非常感谢。

+0

你需要做的是,在T-SQL?通过像JDBC(Java)这样的数据库驱动程序,您可以“描述”查询结果,这通常很容易。 –

+0

我需要检索属于查询中涉及的多个表的列,而不是属于单个表的列 – LarAnto

回答

3

恕我直言,你应该创建一个view包含实际受限制的结果。

喜欢的东西:

CREATE VIEW view_name AS 
SELECT A.C1, 
     B.C1, 
     C.C1 
FROM TABLE1 A 
INNER JOIN TABLE2 B 
     ON A.C2 = B.C2 
      t_line.dbo.is_pagamentorate.parentlink_recid 
INNER JOIN TABLE3 C 
     ON B.C3 = C.C2 
+4

并结合删除对各个表的完全访问权限。 –

+0

好主意,但我没有创建视图的权限! – LarAnto

+1

您无法创建视图,但可以将权限分配给其他用户?与你的dba交谈,让他们根据你提供的代码创建视图,或让他们给你许可。 –