我们的大部分代码——无论是在外部程序中还是在存储过程中——在引用各种 DB 对象时都使用明确的用户名:
SELECT * FROM prod.object
或者
prod.StoredProcedure(.....)
这会导致明显的问题,当数据库的副本被加载到具有不同名称的模式中时——同一个对象现在变成qa.object
了......
我建议,我们完全放弃这种显式引用,而只引用object
and StoredProcedure
。
但是,当另一个帐户(例如prod_ro
)登录并尝试执行prod
的存储过程或浏览prod
的表时,这会导致问题。
人们如何处理这种情况?
您可以使用
然后,对未使用模式限定的对象的所有引用都将被视为您编写了
qa.object
. 您仍然需要必要的权限才能使用相关对象。