作为唯一用户及所有者如何修复Azure SQL Server数据库权限问题
我使用云端部署的Azure SQL Server和SQL Database服务,为了对数据库内的表进行分组,我成功创建了一个新schema,但所有尝试使用该schema的操作都返回无权限报错,也未找到添加权限的有效方法。由于排查成本过高,我放弃了该方案,切回原本使用的单一schema。
问题表现
无法在qbo schema下创建表
执行如下语句时报错:
CREATE TABLE qbo.NewTable ( pkey int PRIMARY KEY, ); -- 报错信息 Started executing query at Line 1 Msg 2760, Level 16, State 1, Line 1 The specified schema name "qbo" either does not exist or you do not have permission to use it. Total execution time: 00:00:00.034
dbo schema下建表成功但无查询权限
我可以不指定schema创建表(默认会落到dbo下),也可以指定dbo创建表,但创建后无法查询该表,返回SELECT权限被拒绝报错:
CREATE TABLE [dbo].[NewTable] ( pkey int PRIMARY KEY, ); -- 建表反馈 Started executing query at Line 1 Commands completed successfully. Total execution time: 00:00:00.194 -- 查询语句 SELECT * FROM [dbo].[NewTable] -- 查询报错 Started executing query at Line 1 Msg 229, Level 14, State 5, Line 1 The SELECT permission was denied on the object 'NewTable', database 'master', schema 'dbo'. Total execution time: 00:00:00.036
手动授予权限报错
尝试手动授予权限时也报错:
GRANT CONTROL ON SCHEMA :: dbo TO <myUserName> -- 报错信息 Started executing query at Line 1 Cannot grant, deny, or revoke permissions to sa, dbo, entity owner, information_schema, sys, or yourself. Total execution time: 00:00:00.035
背景补充
我是该数据库的唯一用户,同时是拥有Owner角色的服务器管理员。我未在Azure门户找到修改相关配置的入口,在Azure Data Studio中执行任何T-SQL语句尝试修复问题,都会返回和上述类似的报错。我猜测是创建新schema的操作修改了某条后端配置,但据我确认,数据库创建完成至今我从未主动撤销过初始拥有的权限,该数据库此前已稳定运行3个月,可以正常执行CREATE、UPDATE、DROP等操作。
我最低需求是恢复自己的数据库和qbo schema的正常操作权限,也希望能了解我操作中的错误点,以及是否可以正常使用多schema功能。
问题解决(UPDATE)
参考大家的评论并重新查看报错信息后,终于意识到是错误连接到了其他数据库导致的所有异常。我一开始以为自己创建的业务数据库就是master库,所以之前的相关评论我没能理解。我目前还不清楚“master”数据库的作用(是默认数据库吗?),但是将连接切换下拉框选中我的主数据库后,大部分问题都已解决。我还不知道最开始是怎么切换到其他库的,但现在我知道要优先检查连接的数据库是否正确。
我还在继续学习schema相关的内容,但至少现在已经可以正常开展工作了。
内容的提问来源于stack exchange,提问作者SteelReyn

