在SQL Server 2008 R2环境中附加由SQL Server 2005创建的数据库时,拒绝访问是较为常见的问题,该问题会直接阻碍数据库的正常迁移和使用,需要从多个维度排查解决。

常见原因分析
出现拒绝访问报错的核心原因主要有三类:
- 数据库文件(.mdf和.ldf)的权限配置不足,当前操作账户没有读写权限
- SQL Server 2008 R2的服务运行账户没有访问数据库文件的权限
- 数据库文件本身存在损坏,或者版本兼容配置存在问题
具体解决步骤
步骤1:修改数据库文件权限
首先找到需要附加的.mdf和.ldf文件,右键点击文件选择属性,切换到安全选项卡,检查当前登录账户以及SQL Server服务账户是否在允许列表中,如果没有则添加并赋予完全控制权限。
如果不确定SQL Server服务账户,可以打开SQL Server配置管理器,找到SQL Server服务,查看对应的登录账户名称。
步骤2:调整SQL Server服务账户权限
如果文件权限配置正确仍然报错,可以尝试将SQL Server服务的登录账户修改为本地系统账户,具体操作如下:
- 打开SQL Server配置管理器
- 在左侧选择SQL Server服务,右侧找到对应的SQL Server实例
- 右键点击选择属性,切换到登录选项卡,选择内置账户为本地系统,点击确定后重启服务
步骤3:使用T-SQL语句附加数据库
如果图形化界面操作仍然失败,可以尝试使用T-SQL语句执行附加操作,示例代码如下:
-- 附加数据库语句,替换文件路径为实际路径 CREATE DATABASE TestDB ON (FILENAME = 'D:Dataold_db.mdf'), (FILENAME = 'D:Dataold_db.ldf') FOR ATTACH;
执行语句后如果仍然报错,可以查看报错信息中的具体提示,针对性调整权限或者检查文件完整性。
步骤4:处理版本兼容问题
SQL Server 2005的数据库版本低于2008 R2,附加时会自动升级版本,如果升级过程失败也会导致访问拒绝。此时可以先在SQL Server 2005环境中将数据库设置为兼容模式为90,再执行分离操作,之后再到2008 R2环境中附加。
设置兼容模式的T-SQL代码如下:
-- 设置数据库兼容模式为SQL Server 2005对应的90 ALTER DATABASE old_db SET COMPATIBILITY_LEVEL = 90;
注意事项
操作前建议先备份原数据库文件,避免操作失误导致数据丢失。如果以上方法都无法解决问题,可以检查数据库文件是否存在物理损坏,或者尝试将文件复制到本地磁盘根目录后再执行附加操作,避免路径过长或者特殊字符导致的问题。
SQL_Server_2008_R2SQL_Server_2005数据库附加拒绝访问权限配置修改时间:2026-07-24 14:03:19