SQLServer xp_instance_regread returned error 5,Access is denied(配置最小权限)

公司一套智能巡检系统,客户需要最小的权限去给这套系统使用;配置完后发现很多权限报错,有一条是关于xp_instance_regread读系统注册表error 5的报错。常理error 5.是属于系统权限问题,遂开始首先对需求注册表路径添加了everyone 的只读权限。如果能成功就不会写这个笔记了。

系统:windows2008R2

数据库: SQLServer2008R2

 

首先创建SQL账号:

其次赋予对xp_instance_regread权限

use master 

go

grant exec on xp_instance_regread to monitor;

 

execute as user='monitor'

go

exec xp_instance_regread 'HKEY_LOCAL_MACHINE','HARDWARE\\DESCRIPTION\\System\\CentralProcessor\\0','ProcessorNameString';

报错如下图:

 

 

 

原因就是sql账号没权限读注册表。

下面是添加注册表:

打开服务器 运行 输入 regedit :依次找到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\

然后展开分支:找到依MSSQL开头SQLSERVER结尾的那层目录,找到MSSQLServer目录展开

然后新建一个键值命名为:ExtendedProcedures

点击ExtendedProcedures,在右侧空白处新建Multi-String类型的命名为xp_regread allowed paths;

然后打开xp_regread allowed paths这个文件,添加你要用数据库账号读的注册表路径;

如下图:

 

 

 

 添加你要读的注册表路径:

最后测试:

 

 

 

 

 

 

 这只是一种方法,这中问题遇到的概率很少,添加sysadmin权限也可以,把sql账号换成域账号也可以,估计服务器账号不识别没有服务器权限的sql账号。

posted @ 2018-08-07 15:58  Hello·Word  阅读(822)  评论(0编辑  收藏  举报