SQL Server数据库错误5123解决方案


当前第2页 返回上一页

(xrm用户的信息)

SYSTEM用户组和xrm这个管理员用户都有权限操作此数据文件和日志文件,而以SQL Server2008的超级管理员SA连接登录实例后,SQL Server却没有权限访问此数据文件。换句话说,以SQL Server2008的超级管理员SA连接登录实例后,登录的身份不在SYSTEM用户组,也不是xrm这个管理员。

那会是什么呢? 我们查看一下当前SQL Server 2008的实例服务的相关信息就知道了,打开Sql ServerConfiguration Manager (即SQL Server 配置管理器)查看一下当前连接到的实例服务的相关信息,如下图所示:

(当前实例服务的相关信息)

发现当前实例SQLSERVER2008的登录身份为“NT AUTHORITY\LocalService”,即操作系统授权的【本地服务】,本地服务也是了个用户组。换句话说,如果我们仅授予【本地服务】这个用户组的权限(而不是Everyone),应该也可以在SQL Server 2008中用sa的账户附加数据库了。

为此,将刚刚授予相应数据文件和日志文件Everyone的权限都删除,再授予LocalService用户组相应数据文件和日志文件的权限,重新尝试附加相应的数据库,发现的确可以附加成功!不必说,授予操作系统授权的【本地服务】用户组比起授予Everyone来说肯定要安全的多。

上面提到的方法中,我们都是改变了数据文件原来的权限范围(原来的权限范围只有SYSTEM即【本地系统】用户组和xrm这个系统管理员)。

而更好的办法是不要改变数据文件的权限范围,仍然以SA身份连接登录SQL Server 2008的实例也能访问相应的数据文件。

而要达到这个目的,我们只需要将相应实例的登录身份改为SYSTEM【本地系统】用户组,SYSTEM也是在相应数据文件的权限范围之内的用户组,而且SQL Server实例以本地系统身份运行,安全性将更高。我们可以在SQL Server 配置管理器中将相应的SQL Server实例的登录身份修改为【本地系统】即Local System,如下列图所示:

 

(修改实例的登录身份)

(实例的登录身份变为LocalSystem)

然后重启相应实例服务,重新以SA身份连接登录SQL Server 2008的相应实例并尝试附加数据库,同样可以成功的将数据库附加上!!!


其实,如果不是要特别地以SA身份连接登录SQL Server 2008的相应实例来附加相应数据库,那么在连接登录SQL Server 2008的相应实例时,身份验证选择【Windows 身份验证】,不做前文中所述的其他修改就可以把数据库附加上去了,原因就在于:【Windows 身份验证】用的是当前操作系统的用户的权限,权限一般都足够大的。另外,在【SQL Server 配置管理器】中针对实例服务可以做的操作,在Windows的【服务】上也可以做到。


标签:SQL

返回前面的内容

相关阅读 >>

sql 优化的几种方法

postgresql 实现列转行问题

sql注入与防止及mybatis基本作用

pgsql条件语句与循环语句示例代码详解

sql interface是什么

oracle存储过程与函数的详细使用教程

sql server 2005基础知识详细整理

sqlserver如何查看索引缺失及dmv使用介绍

sqlite与mysql区别及优缺点介绍

sql的临时表使用小结

更多相关阅读请进入《sql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...