我在一家大公司工作。我没有对特定表的SELECT访问权限,我们称其为NO_ENTRY。我可以查看NO_ENTRY的架构,仅对两列感兴趣。不询问我的dba,是否有可能 看到这两列中的部分或全部数据?
如果相关,我确实对至少一个引用NO_ENTRY的视图具有SELECT访问权限;它只是没有感兴趣的列。我可能对具有感兴趣的列的其他视图具有SELECT访问权限。
我尝试过查找具有相似数据源的表,但是不存在。是否可以查询Teradata以获取我具有SELECT访问权限并且引用了NO_ENTRY中感兴趣的两列的视图的列表?
如果没有,是否还有其他可能解决方法来查看NO_ENTRY感兴趣的两列?
答案 0 :(得分:0)
不,没有合理的可能性。如果DBA通过视图公开了NO_ENTRY的某些字段,并且不允许对NO_ENTRY进行SELECT,则这些字段是您可以访问的唯一字段。如果您确实需要访问您当前无法访问的2个字段,但是您需要它们,只需合理地问一下DBA,并给出合理的理由,为什么您需要访问这2个字段。
答案 1 :(得分:0)
首先,如果您还没有用尽这条路线,请从数据建模或DBA团队中查找数据字典或数据模型。我不确定您的环境是否敏感,以及开发人员或最终用户可以使用哪些信息,但是在许多环境中,可以使用数据字典来帮助用户导航已获得使用权限的数据模型或语义访问层。
如果数据字典,数据建模者和DBA不愿意提供帮助,则可以利用DBC视图查看可以找到的内容。 DBC中的“ X”视图将用户限制为仅查看他们创建或已被授予访问权限的那些对象。在这里戳戳不应该发出任何危险信号。或者,根据您的环境,您还可以查询非X视图(使用以“ V”结尾的视图来说明UNICODE和长对象名)。
如果这些列在视图定义中没有别名,则可以使用DBC.ColumnsV或DBC.ColumnsXV找到您感兴趣的内容。
SELECT DatabaseName
, TableName
, ColumnName
FROM DBC.ColumnsXV
WHERE ColumnName = ‘{ColumnName}’
AND TableName = ‘{ViewName}’
AND DatabaseName = ‘{DatabaseName}’;
如果列是别名,则搜索将更加困难。您可以使用模式搜索(例如LIKE,POSITION,REGEXP_INSTR等)查看DBC.TablesXV中的CreateText
或LastAlterText
。