这个原因是 *** 作系统拒绝访问错误(没有权限)两种方法1 你把需要附加的数据库 复制到你sql 安装所在磁盘的目录下就可以访问了(就是在点击附加数据库时默认打开的目录)一般是 Microsoft SQL Server\MSSQL1\MSSQL\Data 目录下2数据库要附加的数据库所在的磁盘 右键--》属性--》安全--》》添加一个名为 Everyone 的账户就行了
先把原库文件备份一份,然后
在其它机器上直接附加数据库,不要日志文件!试试!如果不行再按以下方法试试!
在其他机器上,用这个试试:
1设置数据库为紧急模式
Use Master
GO
sp_configure 'allow updates', 1
reconfigure with override
GO
UPDATE sysdatabases SET status = 32768 where name = 'DB_SUSPECT'
GO
2停掉SQL Server服务:
NET STOP MSSQLSERVER
3把原始数据库的数据文件DBNAME_DATMDF,DBNAME_LOGLDF移走:
4启动SQL Server服务:
NET START MSSQLSERVER
5重新建立一个同名的数据库DB_SUSPECT;
USE master
GO
CREATE DATABASE DB_SUSPECT
ON
( NAME = DBNAME_DAT,
FILENAME = 'C:',
SIZE = 10,
FILEGROWTH = 5 )
LOG ON
( NAME = 'DBNAME_LOG',
FILENAME = 'g:',
SIZE = 5MB,
FILEGROWTH = 5MB )
GO
6设置数据库运行在单用户的模式:
USE MASTER
GO
ALTER DATABASE DB_SUSPECT SET SINGLE_USER
GO
7停掉SQL服务:
NET STOP MSSQLSERVER
8把原来的数据文件再覆盖回来:
9启动SQL Server服务:
NET START MSSQLSERVER
10重新设置SQLSERVER的状态:
USE MASTER
GO
EXEC sp_resetstatus "DB_SUSPECT"
11数据库完整性检测:
DBCC CHECKDB('DB_SUSPECT')
12恢复数据库为多用户模式:
USE MASTER
GO
ALTER DATABASE DB_SUSPECT SET MULTI_USER
GO
13恢复SQLSERVER原始的配置:
USE MATER
GO
UPDATE sysdatabases SET status = 4194320 where name = 'DB_SUSPECT'
GO
14配置SQLSERVER不允许更新系统表:
USE MASTER
GO
sp_configure 'allow updates', 0
reconfigure with override
GO
15重新启动MSSQLSERVER服务:
最好重新启动 *** 作系统
16备份数据库:
可以通过SQLSERVER企业管理器或T-SQL需要备份MASTER和DB_SUSPECT
转csdn
sql专家邹建的解决办法
作者:邹建
直接restore或附加应该是不行的,
用脚本+导数据肯定没有问题。
2005转到2000的步骤步骤
1
生成for
2000版本的数据库脚本
2005
的manger
studio
--
打开"对象资源管理器"(没有的话按F8),
连接到你的实例
--
右键要转到2000的库
--
任务
--
生成脚本
--
在"脚本向导"的"选择数据库"中,
确定选择的是要转到2000的库
--
勾选"为所选数据库中的所有对象编写脚本"
--
在接下来的"选择脚本选项"中,
找到"为服务器版本编写脚本"项,
选择"SQL
Server
2000"
--
其他选项根据需要设置
--
最后把脚本保存到一个
sql
脚本文件
2
在2000中创建目标数据库
在查询分析器(或2005的manger
studio在打开脚本文件),
连接到SQL
Server
2000,执行上面生成的脚本以创建一个新的数据库
3
将数据从2005导到2000
2005
的manger
studio
--
打开"对象资源管理器"(没有的话按F8),
连接到你的实例
--
右键要转到2000的库
--
任务
--
导出数据
--
在"SQL
Server
导入和导出向导"的"选择数据源"步骤中,
确定选择的是要导出的数据库
--
在"选择目标"步骤中,
连接到
2000,
并选择步骤2新建的库
--
在"选择源表和源视图"中,
选择所有的表
--
最后完成
权限问题
找到数据库文件所在的文件夹,右键文件夹-属性-安全 里面给文件夹添加everyone权限, 会提示是否给文件夹子目录也添加该权限,你就选择是,就可以了
具体步骤
1 更改数据库文件所有者
打开数据库文件夹,右键点击数据库文件,选择“属性Property” =>“安全Security”,点击“高级Advanced”按钮。
新出现的窗口中,删除文件所有者信息不明的用户或组,选中“允许父项的继承权限传播到该对象和所有子对象。包括那些在此明确定义的项目(A)。”。
点击“应用(A)”。
点击“编辑Edit”, 点击“更改Change”按钮。
出现选择“用户与组”窗口,点击“高级Advanced”按钮。
新窗口中,点击“现在查找 Find Now”按钮,选择“用户组Users”。
然后一路ok,结束。
2 修改数据库文件所有者权限
再重新右键点击数据库文件,选择“属性Property”=>“安全Security”,
打开的窗口中会看到所有者权限为空。点击“编辑Edit”按钮,
选中“所有者权限”,勾选“完全控制”,然后点击“ok”按钮。
一路ok,结束。
再进行数据库附加,一路顺畅。
很麻烦的
用这个 试一下吧
在查询分析器里
把数据库的数据文件(mdf)和日志文件(ldf)都拷贝到目的服务器,在SQL Server Query Analyzer中用语句进行恢复:
EXEC sp_attach_db @dbname = 'tt',
@filename1 = '路径\tt_datamdf',
@filename2 = '路径\tt_logldf'
这样就把tt数据库附加到SQL Server中,可以照常使用。如果不想用原来的日志文件,可以用如下的命令:
EXEC sp_detach_db @dbname = 'tt'
EXEC sp_attach_single_file_db @dbname = 'tt',
@physname = '路径\tt_datamdf'
这个是SQL Server 登录账户没有权限,修改方法如下:
开始 - SQL 2008 - 配置工具 - SQL Server配置管理器
选择SQL Server 服务, 双击SQL Server (SQLEXPRESS) 将 内置账户修改为LocalSystem
重启服务后重试附加,成功后将这里再修改回去
这个提示是因为你附加的是高版本的
数据库文件
(比如SQL
Server
2005的
数据文件
),低版本数据库是不兼容高版本数据库的。如果真是2005的数据文件,需要附加到SQL
Server
2005数据库中,然后生成2000的脚本,在2000中执行。
1、可能是没有权限,使用管理员权限运行ssms(sql server Management studio)然后再附加
2、可能是版本不对,先确认要附加的数据库文件是哪个sql版本建立的,当前数据库版本必须大于等于建立数据库文件的版本
3、也可能是数据库文件损坏
4、其他的。。。。还没遇到过
以上就是关于SQL附加数据库报5120的错误,怎么回事哦全部的内容,包括:SQL附加数据库报5120的错误,怎么回事哦、sql server附加数据库时出现错误提示:错误:9004 处理数据库的日志时出错、在SQL数据库中附加数据库时遇到如下错误,请问如何解决执行 Transact-SQL 语句或批处理时发生了异常等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)