数据库正在使用3702(数据库正在使用,所以无法获得对数据库的独占访问权)

网站建设 44
今天给各位分享数据库正在使用3702的知识,其中也会对数据库正在使用,所以无法获得对数据库的独占访问权进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!数据平台路径 1)转移master数据库。 首先,由于 SQL Server 每次启动的时候都需要读取 master 数据库,因此我们必须在企业管理器中改变 SQL Server 启动参数中 master 数据文件和日志文件的路径。 在 SQL Server 属性的“常规”选项卡下面有一个叫做【启动参数】的按钮,单击后可以看到右图所示的界面。

今天给各位分享数据库正在使用3702的知识,其中也会对数据库正在使用,所以无法获得对数据库的独占访问权进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

数据平台路径

1)转移master数据库。

首先,由于 SQL Server 每次启动的时候都需要读取 master 数据库,因此我们必须在企业管理器中改变 SQL Server 启动参数中 master 数据文件和日志文件的路径。

在 SQL Server 属性的“常规”选项卡下面有一个叫做【启动参数】的按钮,单击后可以看到右图所示的界面。

其中,-d 用来指定 master 数据库文件的完全合法路径,而 –l用来指定 master 数据库日志文件的完全合法路径。

将这些参数修改为新的 master 数据文件和日志文件所在的路径,如:

-dE:SQLDatamaster.mdf

-lE:SQLDatamastlog.ldf

接着,停止 SQL Server 服务,将 master.mdf 文件和 mastlog.ldf 文件拷贝到新的位置,如上例中的 E:SQLData。

最后,只要重新启动服务即可。

(2)转移msdb数据库和model数据库。

我们同样可以使用 sp_detach_db 和 sp_attach_db 来分离和附加这两个数据库。但是对于 msdb 数据库,首先应确保 SQL Server 代理当前没有运行,否则 sp_detach_db 存储过程将运行失败,并返回如下消息:

无法除去数据库 'msdb' ,因为它当前正在使用。

接着,必须用跟踪标记 3608 启动 SQL Server,这样它不会恢复除 master之外的任何数据库。

要添加跟踪标记 3608 作为 SQL Server 的启动参数,首先调出如前所示的“启动参数”对话框,再添加新参数 -T3608。

添加跟踪标记 3608 后,停止并重新启动 SQL Server,再如下分离 msdb 或者 model 数据库:

EXEC sp_detach_db 'msdb'

GO

接着,将数据文件和日志文件移到新的位置,然后再如下重新附加 msdb 数据库或者 model 数据库:

USE master

GO

EXEC sp_attach_db @dbname = 'model',

@filename1 = 'mdf 文件新的路径名',

@filename2 = 'ldf 文件新的路径名'

GO

最后,在企业管理器中,从“启动参数”框中删除 -T3608 跟踪标记,再停止并重新启动 SQL Server。

(3)转移 tempdb 数据库。

对于 tempdb 数据库而言,可以直接使用 ALTER DATABASE 语句来为数据文件和日志文件指定新的存放位置,如下所示:

USE master

GO

ALTER DATABASE tempdb MODIFY FILE (NAME = tempdev, FILENAME =

'E:Sqldatatempdb.mdf')

go

ALTER DATABASE tempdb MODIFY FILE(NAME = templog, FILENAME =

'E:Sqldatatemplog.ldf')

GO

引自:

移动 MSDB (SQL Server 7.0)

注意:如果您在移动 msdb 和 model 数据库的同时结合使用此过程,则重新附加的顺序必须首先是 model,然后是 msdb。如果首先重新附加的是 msdb,则必须将它分离,等到附加完 model 后再重新附加。

1. 确保 SQL Server 代理当前没有运行。

2. 使用与移动用户数据库相同的步骤。

注意:如果 SQL Server 代理正在运行,则 sp_detach_db 存储过程将会失败,并返回以下消息:

服务器:消息 3702,级别 16,状态 1,行 0

无法删除数据库 'msdb',因为该数据库当前正在使用。

DBCC 执行完毕。如果 DBCC 输出了错误消息,请与系统管理员联系。

回到顶端

移动 MSDB 数据库(SQL Server 2000 和 SQL Server 2005)

注意:如果您在移动 msdb 和 model 数据库的同时结合使用此过程,则重新附加的顺序必须首先是 model,然后是 msdb。如果首先重新附加的是 msdb,则必须将它分离,等到附加完 model 后再重新附加。

在 SQL Server 2000 和 SQL Server 2005 中,不能使用 sp_detach_db 存储过程分离系统数据库。运行 sp_detach_db 'msdb' 将会失败并返回以下消息:

服务器:消息 7940,级别 16,状态 1,行 1

无法分离系统数据库 master、model、msdb 和 tempdb。

要在 SQL Server 2000 上移动 MSDB 数据库,请按照下列步骤操作:

1. 在 SQL Server 企业管理器中,右键单击服务器名,然后单击属性。

2. 在常规选项卡上,单击启动参数。

3. 添加一个新参数“-T3608”(不带引号)。

添加跟踪标记 3608 后,按照下列步骤操作:

1. 停止并重新启动 SQL Server。

2. 确保 SQL Server 代理服务当前没有运行。

3. 按如下所示分离 msdb 数据库:

use master

go

sp_detach_db 'msdb'

go

4. 将 Msdbdata.mdf 和 Msdblog.ldf 文件从当前位置 (D:Mssql8Data) 移到新位置 (E:Mssql8Data)。

5. 在企业管理器中,从启动参数框中删除 -T3608 跟踪标记。

6. 停止并重新启动 SQL Server。

7. 按如下所示重新附加 MSDB 数据库:

use master

go

sp_attach_db 'msdb','E:Mssql8Datamsdbdata.mdf','E:Mssql8Da tamsdblog.ldf'

go

注意:如果您试图通过使用跟踪标记 -T3608 启动 SQL Server 来重新附加 msdb 数据库,会收到以下错误:

服务器:消息 615,级别 21,状态 1,行 1

未能找到 ID 为 3,名称为 'model' 的数据库表。

回到顶端

如果您使用的是 SQL Server 2005

可以使用 SQL Server 配置管理器来更改 SQL Server 服务的启动参数。有关如何更改启动参数的更多信息,请访问以下 Microsoft Developer Network 网站:

. aspx ( .aspx)

移动 MSDB 数据库后,可能会收到以下错误消息:

错误 229:拒绝了对对象 'ObjectName' (数据库 'master',所有者 'dbo')的执行权限。

发生此问题的原因是所有权链断裂。MSDB 数据库和 master 数据库的所有者不相同。因此,MSDB 数据库的所有权已经发生更改。要解决此问题,请在 Isql.exe 命令行实用工具或 Osql.exe 命令行实用工具中运行以下命令:

USE MSDB

Go

EXEC sp_changedbowner 'sa'

Go

有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:

272424 ( ) INF:数据库范围内的对象所有权链检查取决于映射至对象所有者的登录信息

回到顶端

移动 master 数据库

1. 在 SQL Server 企业管理器中,更改 master 数据和日志文件的路径。

注意:您也可以在此更改错误日志的位置。

2. 在企业管理器中,右键单击 SQL Server,然后单击属性。

3. 单击启动参数,将会显示以下条目:

-dD:MSSQL7datamaster.mdf

-eD:MSSQL7logErrorLog

-lD:MSSQL7datamastlog.ldf

-d 是 master 数据库数据文件的完全限定路径。

-e 是错误日志文件的完全限定路径。

-l 是 master 数据库日志文件的完全限定路径。

4. 按如下所示更改这些值:

1. 删除 Master.mdf 和 Mastlog.ldf 文件的当前条目。

2. 添加指定新位置的新条目:

-dE:SQLDATAmaster.mdf

-lE:SQLDATAmastlog.ldf

5. 停止 SQL Server。

6. 将 Master.mdf 和 Mastlog.ldf 文件复制到新位置 (E:Sqldata)。

7. 重新启动 SQL Server。

回到顶端

移动 model 数据库

要移动 model 数据库,必须用跟踪标记 3608 启动 SQL Server,这样它不会恢复除 master 之外的任何数据库。

注意:此时,您不能立即访问任何用户数据库。使用此跟踪标记时,除下列步骤外,不要执行其他任何操作。要将跟踪标记 3608 添加为 SQL Server 启动参数,请按照下列步骤操作:

1. 在 SQL Server 企业管理器中,右键单击服务器名,然后单击“属性”。

2. 在“常规”选项卡上,单击“启动参数”。

3. 添加一个新参数“-T3608”(不带引号)。

添加跟踪标记 3608 后,按照下列步骤操作:

1. 停止并重新启动 SQL Server。

2. 按如下所示分离“model”数据库:

use master

go

sp_detach_db 'model'

go

3. 将 Model.mdf 和 Modellog.ldf 文件从 D:Mssql7Data 移到 E:Sqldata。

4. 按如下所示重新附加 model 数据库:

use master

go

sp_attach_db 'model','E:Sqldatamodel.mdf','E:Sqldatamodello g.ldf'

go

5. 在企业管理器中,从启动参数框中删除 -T3608 跟踪标记。

6. 停止并重新启动 SQL Server。您可以使用 sp_helpfile 确认文件位置的更改:

use model

go

sp_helpfile

go

回到顶端

移动 tempdb

您可以使用 ALTER DATABASE 语句来移动 tempdb 文件。

1. 按如下所示使用 sp_helpfile 确定 tempdb 数据库的逻辑文件名:

use tempdb

go

sp_helpfile

go

每个文件的逻辑名均包含在名称列中。该示例使用了默认文件名 tempdev 和 templog。

2. 按如下所示使用 ALTER DATABASE 语句指定逻辑文件名:

use master

go

Alter database tempdb modify file (name = tempdev, filename = 'E:Sqldatatempdb.mdf')

go

Alter database tempdb modify file (name = templog, filename = 'E:Sqldatatemplog.ldf')

go

应当收到以下确认更改的消息:

文件“tempdev”在 sysaltfiles 中被修改。重新启动 SQL Server 后会删除旧文件。

文件“templog”在 sysaltfiles 中被修改。重新启动 SQL Server 后会删除旧文件。

数据库附加时,说是文件正在使用应该怎么办?

先停掉数据库的服务,然后将数据库文件复制一份到别的地方,然后再启动数据库服务,再附加就行了~

数据库‘xxx’正在使用该文件 如何解决?

应该是有用户在连接数据库,所以不能做覆盖。

建议用sp_who语句查看有哪些进程在访问此数据库,查到后根据id进行删除,语句是kill id号

恢复数据库

看看日志文件在不在,如果还在,有可能回复,如果不在了,就无法恢复了.

sql server 还原数据库时提示数据库正在使用,无法进行操作的解决方法

这个问题的原因在于有用户连接了当前要做还原的数据库,这里的用户甚至包括当前要做还原的用户。解决办法就是关闭与要还原数据库的所有连接。

脚本之家小编推荐的一个方法:到服务里面重启下sqlserver服务即可。

问题一描述:SQL

Server数据库备份还原后,在数据库名称后会出现“受限制访问”字样

问题二描述:在对SQL

Server数据库进行还原时,提示:System.Data.SqlClient.SqlError:因为数据库正在使用,所以无法获得对数据库的独占访问权。(Microsoft.SqlServer.Smo)。出现此问题的原因是在还原数据库时,有其他用户正在使用数据库。还原数据库要求数据库工作在单用户模式。通常就是DBA在操作时,不允许其他用户连接数据库。

问题一解决办法:

右键点击数据库

-

属性

-

选项

-

状态

-

限制访问

-

选择Multiple

-

确定。

问题二解决办法:

方法一(最方便):右键点击数据库

-

属性

-

选项

-

状态

-

限制访问

-

选择Single-

确定。然后还原。

方法二(最直接):断开数据库连接

方法三(最暴力):注销/重启数据库服务器

方法四(最麻烦):写代码修改数据库相关属性,虽然麻烦,有的时候还是要用到,那就用到的时候再研究。

①先切换数据库到master数据库。执行语句

select

*

from

master..sysprocesses

where

dbid=db_id(

'数据库名称')

②然后逐步运行语句

exec

kill

spid(上一步结果集中的数据),

问题就解决了。哈哈

今天在还原数据库的时候,提示"因为数据库正在使用,所以无法获得对数据库的独占访问权",无论我是重启数据库,还是重启计算机,都不能解决问题,多番尝试后,终于解决了该问题。现将引发该问题的原因与解决方案写出来,有不对的地方欢迎大家提出来。

引发原因:是因为我在还原数据库的时候,还有其他的用户正在使用数据库,所以就会出现以上提示。

解决方法:

1,设置数据库在单用户模式下工作。

设置方法:在需要还原的数据库上右击,在右键菜单命令上选择"属性"-

"选项"-

"状态"-

"限制访问"-

"Single"。这是SQLSERVER2005的菜单命令,其它版本请自己查找。

2,利用SQL语句,杀死正在使用该数据库的所有进程,自己以前在做一个SQL

SERVER操作小工具的时候有写过该功能的SQL,贴出来供大家参考:

复制代码

代码如下:

declare

@dbname

varchar(50)

set

@dbname='数据库名称'

declare

@sql

varchar(50)

declare

cs_result

cursor

local

for

select

'kill

'+cast(spid

as

varchar(50))

from

sys.sysprocesses

where

db_name(dbid)=@dbname

open

cs_result

fetch

next

from

cs_result

into

@sql

while

@@fetch_status=0

begin

execute(@sql)

fetch

next

from

cs_result

into

@sql

end

close

cs_result

deallocate

cs_result

该SQL语句利用游标循环所有正在使用该数据库的进程,并通过kill命令杀死进程。

3,利用SQL语句,断开所有用户链接,并回滚所有事务,具体SQL语句如下:

复制代码

代码如下:

ALTER

DATABASE

[数据库名称]

SET

OFFLINE

WITH

ROLLBACK

IMMEDIATE

注意:在使用方法2与3时,不要在需要的还原的数据库下执行,建议在master数据库下面执行。

还原数据库时老是提示,因为数据库正在使用中,所以未能或得对数据库的排它使用权

请问你是在服务器上面还原吗?如果是在服务器上面还原很可能是还有某客户端在访问你的数据库也就是数据库正在使用中,这样的情况建议你断开服务器的网线,关掉所有可能用到数据库的客户端包括服务器上面的能用到服务器的程序。

数据库正在使用3702的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于数据库正在使用,所以无法获得对数据库的独占访问权、数据库正在使用3702的信息别忘了在本站进行查找喔。

数据库正在使用3702 数据库正在使用所以无法获得对数据库的独占访问权数据库正在使用无法删除数据库正在使用该文件数据库正在使用的表可以重命名吗数据库正在使用无法分离数据库正在使用无法还原数据库正在使用怎么删除所以无法获得对数据库的排他访问权所以无法获得
扫码二维码