You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure SQL中查询sys.objects、sys.partitions的最低用户权限配置方法

SQL Server 受限统计用户最优实现方案

我们采用存储过程封装+最小权限分配的方案实现需求,既满足统计需求,又严格限制用户权限范围,完全符合最小权限原则。

实现步骤

  • 第一步:在目标业务库中创建封装统计逻辑的专用存储过程,直接内置你需要执行的查询语句
CREATE PROCEDURE dbo.GetTableRecordCount
WITH EXECUTE AS OWNER -- 执行时使用存储过程所有者权限,无需给用户开放底层对象权限
AS
BEGIN
    SET NOCOUNT ON;
    SELECT (Schema_name(A.schema_id) + '.' + A.NAME ) AS TableName,
           Sum(B.rows) AS RecordCount
    FROM sys.objects A
             INNER JOIN sys.partitions B
                     ON A.object_id = B.object_id
    WHERE A.type = 'U'
    -- 如果需要只开放指定schema的统计,可额外加过滤条件,例如:
    -- AND Schema_name(A.schema_id) = '业务Schema名'
    GROUP BY A.schema_id, A.NAME;
END
GO
  • 第二步:创建对应的SQL登录和数据库用户(如果已存在可跳过)
-- 创建服务器登录,自行替换强密码
CREATE LOGIN TableStatsUser WITH PASSWORD = '自定义强密码';
GO
-- 切换到目标业务库
USE 你的业务库名称;
GO
-- 创建数据库用户映射到登录
CREATE USER TableStatsUser FOR LOGIN TableStatsUser;
GO
  • 第三步:仅给用户授予该存储过程的执行权限,无需分配任何其他权限
GRANT EXECUTE ON dbo.GetTableRecordCount TO TableStatsUser;
GO

方案优势

该方案权限控制粒度极细:用户除了执行存储过程获取表行数统计结果之外,没有任何额外权限,既无法读取任意用户表的实际业务数据,也不能直接查询系统视图获取其他未授权信息,实现成本极低,安全性最高。

内容的提问来源于stack exchange,提问作者Kenny_I

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:54:03