计划任务通过命令行脚本进行地理编码,因此需要访问存储在 Microsoft SQL Server 中的一些数据(地理编码的地址)。
该数据属于模式A,由来自多个表的数据组成。
我想过
- 创建 sql server 登录名、模式和用户B
- 创建从A.TABLE_X和A.TABLE_Y中选择的视图A.VIEW1
- 授予对A.VIEW1 TO B的SELECT权限
由于视图引用了其他表,因此从A.VIEW1中选择B会引发权限错误:
对象“ A.TABLE_X ”、数据库“...”、架构“...”的SELECT 权限被拒绝。
在A.TABLE_X , A.TABLE_Y , ... TO B上是否有任何替代 GRANT SELECT 的方法?因为如果我这样做,B可以从这些表中读取所有数据,不是吗?
我不希望B能够这样做,因为B的 sql server 凭据将以明文形式存储在文件系统或任务调度程序中。(有什么选择吗?)
A.TABLE_X和A.TABLE_Y包含与客户相关的数据,例如银行帐号等。我可以将 GRANT 限制为特定列,但我仍然不喜欢这个想法。
另一种方法是之前使用存储的过程 A.PROC_FILL填充临时表,但是将 EXEC 授予B也不够,不是吗?