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

为Student_Table配置行级安全时创建用户遇语法错误求助

解决SQL创建用户时的语法错误问题

错误原因

创建用户的语句报错,是因为用户名包含空格、冒号这类特殊字符,SQL Server要求这类包含特殊字符的标识符必须用**方括号([])**包裹,否则会被解析为语法错误。

修正后的用户创建语句

CREATE USER Manager WITHOUT LOGIN;
CREATE USER [Level 1: General staff] WITHOUT LOGIN;
CREATE USER [Level 2:IT Management] WITHOUT LOGIN;
CREATE USER [Level 3: Senior Managers] WITHOUT LOGIN;
GO

后续行级安全配置提示(可选)

完成用户创建后,你可以继续配置行级安全策略,限制不同用户只能查看对应部门的数据:

  1. 创建安全谓词函数,匹配当前用户与Department列的对应关系:
CREATE FUNCTION dbo.fn_StudentDepartmentPredicate(@Department varchar(max))
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN SELECT 1 AS predicate_result
WHERE 
    -- 映射用户到对应的部门值
    @Department = CASE USER_NAME()
        WHEN 'Level 1: General staff' THEN 'Level 1: General Staff'
        WHEN 'Level 2:IT Management' THEN 'Level 2: IT Management'
        WHEN 'Level 3: Senior Managers' THEN 'Level 3: Senior Managers'
    END
    -- 允许Manager查看所有数据(按需调整)
    OR USER_NAME() = 'Manager';
GO
  1. 创建并启用安全策略:
CREATE SECURITY POLICY dbo.StudentTableRowSecurity
ADD FILTER PREDICATE dbo.fn_StudentDepartmentPredicate(Department)
ON dbo.Student_Table
WITH (STATE = ON);
GO

内容的提问来源于stack exchange,提问作者Naomi N 22

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:00:46