我正在使用 sql server,我被要求只授予查询中涉及的表列。
那么假设我有这个查询 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 放入输入并在输出中获取所涉及列的列表的方法?
非常感谢。
最佳答案
恕我直言,您应该创建一个 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
关于sql - 如何列出查询中的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42276064/