错误提示
无法为此请求检索数据。(Microsoft.SqlServer.SmoEnum)其他信息执行Transact-Sql语句或批处理时发生了异常。(Microsoft.SqlServer.ConnectionInfo)尝试打开或创建物理文件“d:/-/Data/-/***.mdf”时,Create file遇到操作系统错误5(拒绝访问。)
问题背景
数据库版本:SQL Server 2005企业版
操作系统版本:Windows Server 2003企业版
错误引发描述:数据库分离后,把数据硬盘从一台主机换挂到另一台主机上(两台主机的操作系统和数据库版本都是一样的)。结果附加数据库时,提示上面的错误。
问题分析
很明显,是文件操作权限不够引发的问题。
解决方法
给数据库文件所在的文件夹属性安全里添加相应的用户并赋予完全操作权限即可解决问题(网上的资料都是这么说的)。给什么用户添加权限呢?比如:Administrators用户组、NETWORK SERVICE、MSSQLUser或Everyone,具体用哪个,看你的SQL服务是哪个帐户启动的,如果不清楚或者懒一点,可以直接添加Everyone用户。本来想上个截图的,不知道为什么,几十Kb的图片,一直上传不成功。
意外情况
可能你通过上面的解决方法,给数据文件所在的文件夹添加了相应的用户和操作权限,但问题依旧(这也正是我纠结痛苦的地方,网上都是那么说的,咋就不行哩~~??!)。最后我的解决方法是:给每个数据库文件(包括mdf、ldf、ndf)分别设置用户和操作权限(操作方法和给文件夹加操作权限一样,都是在右键属性里的安全选项)。问题终于彻底得到解决。原因应该是文件夹的权限没有自动继承到里面的文件上。