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

SQL Server执行Grant View权限时报Msg102:对象名含‘-’语法错误

问题原因及修复方案

报错原因

  • 特殊字符对象名未被正确识别:SQL Server规定,包含-、空格、中文或保留字的对象名,必须用方括号[]包裹。你的对象dbo.testing_2022-03-17里的-会被解析器当成算术减号,导致语句被错误解读为dbo.testing_2022 - 03 - 17,触发语法错误。
  • 原存储过程的动态SQL拼接有缺陷:你使用的存储过程在拼接授权语句时,没有给架构名和对象名添加方括号,直接拼接成了无包裹的对象路径,遇到特殊字符对象就会触发语法错误。

修复方法

修改存储过程中的动态SQL拼接逻辑,给架构名、对象名(以及用户名)都加上方括号,示例代码如下:

-- 错误的拼接方式(原代码可能类似)
SET @SQL = 'GRANT VIEW DEFINITION ON ' + @SchemaName + '.' + @ObjectName + ' TO ' + @UserName;

-- 正确的拼接方式
SET @SQL = 'GRANT VIEW DEFINITION ON [' + @SchemaName + '].[' + @ObjectName + '] TO [' + @UserName + '];'

通过方括号包裹,SQL解析器会将包含特殊字符的字符串正确识别为对象名称,避免语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:48:24