SQL附加数据库报5120的错误,怎么回事哦

SQL附加数据库报5120的错误,怎么回事哦,第1张

这个原因是 *** 作系统拒绝访问错误(没有权限)两种方法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 语句或批处理时发生了异常等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9323396.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存