使用SQL依赖观察SQL表遇权限错误,求表变更通知客户端解决方案
查询通知权限问题解决方案
错误信息
连接接受错误:{0} '/' 附近有语法错误。已将数据库上下文更改为 'LDMDb'。启动查询通知需要当前用户具备以下权限:[CREATE PROCEDURE, CREATE SERVICE, CREATE QUEUE, SUBSCRIBE QUERY NOTIFICATIONS, CONTROL, REFERENCES]
场景说明
要监控LDMDb数据库中目标表的新增、更新、删除操作,通过查询通知机制推送变更信息给客户端,当前因权限不足无法启用该功能,同时伴随SQL语法错误。
解决步骤
1. 给数据库用户授予所需权限
在SQL Server中切换到LDMDb数据库,执行以下SQL语句为你的操作账号授予权限(替换[你的实际用户名]为真实账号):
USE LDMDb; GO GRANT CREATE PROCEDURE TO [你的实际用户名]; GRANT CREATE SERVICE TO [你的实际用户名]; GRANT CREATE QUEUE TO [你的实际用户名]; GRANT SUBSCRIBE QUERY NOTIFICATIONS TO [你的实际用户名]; GRANT CONTROL ON DATABASE::LDMDb TO [你的实际用户名]; GRANT REFERENCES ON DATABASE::LDMDb TO [你的实际用户名]; GO
如果用Windows身份验证,账号格式是[域名\用户名]
2. 排查并修复SQL语法错误
错误提示'/' 附近有语法错误,需要检查你用于注册查询通知的SQL语句:
- 确保查询是标准的SELECT语句,符合查询通知的规则(不能用
SELECT *、不能包含计算列、临时表等) - 检查语句里是否误写了
/字符,比如路径输入错误、注释格式不对等
3. 验证修复效果
权限授予完成、语法错误修复后,重启相关服务或重新运行代码,确认错误是否消除。
内容的提问来源于stack exchange,提问作者Niky savaliya
相关产品推荐
相关产品推荐

