如何修复 RegCreateKeyEx() 返回错误 5,“访问被拒绝。”在 SQL Server 2017 中
Posted
技术标签:
【中文标题】如何修复 RegCreateKeyEx() 返回错误 5,“访问被拒绝。”在 SQL Server 2017 中【英文标题】:How to fix RegCreateKeyEx() returned error 5, 'Access is denied.' in SQL Server 2017 【发布时间】:2019-03-29 11:59:52 【问题描述】:我正在尝试在 SQL Server 2017 中使用以下命令将身份验证模式更改为混合模式:
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE',
N'SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQLServer',
N'LoginMode', REG_DWORD, 2
到目前为止我已经执行了这个命令:
EXEC sp_addsrvrolemember 'NT AUTHORITY\SYSTEM', 'sysadmin';
GRANT EXECUTE ON xp_instance_regwrite TO public
重新启动 SQL 服务后,我仍然收到此错误:
RegCreateKeyEx() 返回错误 5,“访问被拒绝。”
我已将所有权限授予 SQL 中的所有用户,这与 SQL 或 Windows 有关吗?我该如何解决?
【问题讨论】:
***.com/questions/29712281/… xp_regread() returned error 5, 'Access is denied.'的可能重复 不重复,请仔细阅读 仔细阅读表明您在使用xp_instance_regwrite
时不恰当地将实例名称 (MSSQL14.MSSQLSERVER
) 添加到密钥中。链接的问题演示了正确使用。
【参考方案1】:
为了工作,我必须更改执行 SQL 后台服务的用户。单击 Windows -> 搜索 Services 并找到 MS SQL Server 并右键单击并更改属性,在此您可以将 sql 用户更改为具有管理员权限的人。不是最好的方法,但确实有效。
【讨论】:
我不知道“SQL后台服务”是什么,但是更改SQL Server、SQL Agent和其他SQL Server启动帐户需要使用SQL Server配置管理器。通过 services.msc 更改启动帐户不会分配所需的注册表权限。稍后使用 services.msc 可能会导致对密钥的访问被拒绝。我并不是说这里发生了这种情况——我只是为以后阅读这篇文章的人添加一个“买者自负”的警告。以上是关于如何修复 RegCreateKeyEx() 返回错误 5,“访问被拒绝。”在 SQL Server 2017 中的主要内容,如果未能解决你的问题,请参考以下文章
> 使用 RegCreateKeyEx() 的 Windows 可执行文件不提示输入 UAC 管理员权限并失败? [复制]