昨天在学校机房,旁边的同学在SQL Server 2008上附加数据库时,遇到提示“操作系统 拒绝访问,错误:5120”。
错误详情
1.错误提示
2.错误代码:5120
解决方法一:修改mdf和ldf文件的权限
1.找到mdf文件–>右键属性–>点击安全
2.选择Authenticated User–>点击编辑
3.允许Authenticated User完全控制
4.记得还要一样修改ldf文件的权限,不然还会拒绝,报ldf拒绝访问,修改之后就成功可以成功附加了
解决方法二:切换身份验证方式(如果已是windows身份验证不适用)
断开已有的连接–>切换验证方式
解决方法三:修改服务
打开”SQL Server 配置管理器”
–>选择”SQL Server 服务”–>右键单击“SQL Server (MSSQLSERVER)
即数据库服务–>属性
–>在“登录”选项卡下,选中“内置账户”–>“内置账户”改为“Local System”–>确定,等待服务重启即可
我使用的是win10,win7、win8等解决思路一样
错误总结
原因是操作系统拒绝访问错误(没有权限),修改内置账号户原理是
简单说明:
Local system :本地系统用户, 个人电脑通常选择这个用户 ,权限高,同时也存在危险
Network service :网络服务用户, 通常需要远程连接的都使用这个
Local Service :本地服务
LocalSystem 账户
LocalSystem是预设的拥有本机所有权限的本地账户,这个账户跟通常的用户账户没有任何关联,也没有用户名和密码之类的凭证。这个服务账户可以打开注册表的HKEY_LOCAL_MACHINE\Security键,当LocalSystem访问网络资源时,它是作为计算机的域账户使用的。
举例来说,以LocalSystem账户运行的服务主要有:WindowsUpdate Client、 Clipbook、Com+、DHCP Client、Messenger Service、Task Scheduler、Server Service、Workstation Service,还有Windows Installer。
Network Service 账户
Network Service账户是预设的拥有本机部分权限的本地账户,它能够以计算机的名义访问网络资源。但是他没有Local System 那么多的权限,以这个账户运行的服务会根据实际环境把访问凭据提交给远程的计算机。Network Service账户通常可以访问Network Service、Everyone组,还有认证用户有权限访问的资源。
举例来说,以Network Service账户运行的服务主要有:Distributed Transaction Coordinator、DNS Client、Performance Logs and Alerts,还有RPC Locator。
Local Service 账户
Local Service账户是预设的拥有最小权限的本地账户,并在网络凭证中具有匿名的身份。Local Service账户通常可以访问Local Service、Everyone组还有认证用户有权限访问的资源。
举例来说,以Local Service账户运行的服务主要有:Alerter、Remote Registry、Smart Card、SSDP,WebClient。
–安装数据库服务时选择内置账户–
这是上SQL白老师提的一个问题