如何在SQL Server中低资源消耗完成看门狗SELECT权限测试
SQL Server 低资源看门狗校验实现方案
推荐校验语句(覆盖所有4个校验维度)
使用以下语句即可,服务端资源消耗趋近于0,完全满足需求:
SELECT 1 WHERE 1 = 0;
校验逻辑说明:
- 语句成功执行无报错:自动验证了SQL Server服务正常、网络连接可用、登录账号认证通过三个维度
- 该语句属于SELECT操作,执行时会校验当前账号对目标schema的SELECT权限,只要能正常返回空结果集,就证明权限符合要求
- 语句不会扫描任何用户表、不会产生磁盘IO、不会加载任何数据到缓存,资源占用可以忽略
关于空操作(NOOP)命令的说明
SQL Server没有原生的NOOP专用命令,不同场景可以选择不同的低开销替代方案:
- 如果只需要验证服务、连接、登录三个维度,不需要校验SELECT权限:可以用
WAITFOR DELAY '00:00:00',该命令不会返回任何结果集,执行开销比SELECT语句更低 - 如果必须覆盖SELECT权限校验,
SELECT 1 WHERE 1 = 0就是最优的等价NOOP实现,没有性能更优的替代方案
注意事项
- 建立数据库连接时直接指定需要校验的目标数据库即可,不需要在查询语句中额外指定库名、schema前缀,减少不必要的元数据解析开销
- 不要给SELECT语句加FROM子句,加了之后会触发对应表的元数据扫描和额外权限校验,反而会增加不必要的资源消耗
内容的提问来源于stack exchange,提问作者00__00__00
相关产品推荐
相关产品推荐

