SQL SERVER 2005的数据库附加问题 如何将SQL SERVER 2000数据库的文件*.mdf附加到SQL SERVER 2005中去,我试了一下,提示“附加数据库错误”,应该怎样才能执行正确呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先将原先的2000数据库detach掉,或者停止服务,再试试看 sp_attach_db 'dbname','.... mdf','.... ldf' 各位能不能说的详细点,这里的数据库文件是“Tripdat.mdf”和“Triplog.ldf”,谢谢了~ 错误信息如下:标题: Microsoft SQL Server Management Studio Express------------------------------附加数据库 对于 服务器“CHENCHAO-PC\SQLEXPRESS”失败。 (Microsoft.SqlServer.Express.Smo)有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.3042.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=附加数据库+Server&LinkId=20476------------------------------其他信息:执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.Express.ConnectionInfo)------------------------------无法打开物理文件 "D:\Trip\TripDB\Tripdat.mdf"。操作系统错误 5:"5(拒绝访问。)"。 (Microsoft SQL Server,错误: 5120)有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.3042&EvtSrc=MSSQLServer&EvtID=5120&LinkId=20476------------------------------按钮:确定------------------------------ 你要先确定你的这两个文件是可以被访问的,就必须关掉2000数据库服务,或者detach掉这个DB,你可以通过拷贝这两个文件来证明是否可以访问 给你拷贝一个KB看看,应该就清楚了: =================================================概要本文描述如何更改任何 SQL Server 7.0、SQL Server 2000 或 SQL Server 2005 数据库的数据和日志文件的位置。回到顶端更多信息更改某些 SQL Server 系统数据库的位置必须遵循的步骤与更改用户数据库的位置必须遵循的步骤不同。将分别对这些特殊情况给予说明。注意:SQL Server 7.0 系统数据库与 SQL Server 2000 不兼容。不要将 SQL Server 7.0 master、model、msdb 或分发数据库附加到 SQL Server 2000。如果您使用的是 SQL Server 2005,则只能将 SQL Server 2005 数据库附加到一个实例。本文的所有示例都假设 SQL Server 安装在 D:\Mssql7 目录中,而且所有数据库和日志文件都位于默认目录 D:\Mssql7\Data 中。这些示例将所有数据库的数据和日志文件都移到 E:\Sqldata。回到顶端先决条件• 从数据库的当前位置备份当前所有数据库,尤其是 master 数据库。 • 必须具有系统管理员 (sa) 权限。 • 必须知道数据库的所有数据文件和日志文件的名称及当前位置。注意:可以使用存储过程 sp_helpfile 来确定数据库所使用的所有文件的名称和当前位置:use <database_name>gosp_helpfilego • 应可以以独占方式访问被移动的数据库。如果在此过程中出现问题并且无法访问已经移动的数据库,或无法启动 SQL Server,则需要查看 SQL Server 错误日志和 SQL Server 联机丛书以获取这些错误的更多信息。 回到顶端移动用户数据库以下示例将移动一个名为 mydb 的数据库,该数据库包含一个数据文件 Mydb.mdf 和一个日志文件 Mydblog.ldf。如果您要移动的数据库还有其他数据或日志文件,请在存储过程 sp_attach_db 中用一个逗号分隔的列表将它们全部列出。无论数据库包含多少文件,存储过程 sp_detach_db 都不会更改,原因是它不会列出这些文件。 1. 按如下所示分离数据库:use master go sp_detach_db 'mydb' go 2. 然后,将数据和日志文件从当前位置 (D:\Mssql7\Data) 复制到新位置 (E:\Sqldata)。 3. 按如下所示重新附加指向新位置中这些文件的数据库:use master go sp_attach_db 'mydb','E:\Sqldata\mydbdata.mdf','E:\Sqldata\mydblog.ldf' go使用 sp_helpfile 确认文件位置的更改:use mydb go sp_helpfile gofilename 列的值应当反映出新的位置。 回到顶端移动 pubs 和 Northwind使用与移动用户数据库相同的步骤。回到顶端移动 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 mastergosp_detach_db 'msdb'go 4. 将 Msdbdata.mdf 和 Msdblog.ldf 文件从当前位置 (D:\Mssql8\Data) 移到新位置 (E:\Mssql8\Data)。 5. 在企业管理器中,从启动参数框中删除 -T3608 跟踪标记。 6. 停止并重新启动 SQL Server。 7. 按如下所示重新附加 MSDB 数据库:use mastergo sp_attach_db 'msdb','E:\Mssql8\Data\msdbdata.mdf','E:\Mssql8\Data\msdblog.ldf' go注意:如果您试图通过使用跟踪标记 -T3608 启动 SQL Server 来重新附加 msdb 数据库,会收到以下错误:服务器:消息 615,级别 21,状态 1,行 1未能找到 ID 为 3,名称为 'model' 的数据库表。 回到顶端如果您使用的是 SQL Server 2005可以使用 SQL Server 配置管理器来更改 SQL Server 服务的启动参数。有关如何更改启动参数的更多信息,请访问以下 Microsoft Developer Network 网站:http://msdn2.microsoft.com/zh-cn/library/ms190737.aspx (http://msdn2.microsoft.com/zh-cn/library/ms190737.aspx)移动 MSDB 数据库后,可能会收到以下错误消息:错误 229:拒绝了对对象 'ObjectName' (数据库 'master',所有者 'dbo')的执行权限。发生此问题的原因是所有权链断裂。MSDB 数据库和 master 数据库的所有者不相同。因此,MSDB 数据库的所有权已经发生更改。要解决此问题,请在 Isql.exe 命令行实用工具或 Osql.exe 命令行实用工具中运行以下命令:USE MSDBGoEXEC sp_changedbowner 'sa'Go有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 272424 (http://support.microsoft.com/kb/272424/) INF:数据库范围内的对象所有权链检查取决于映射至对象所有者的登录信息 回到顶端移动 master 数据库1. 在 SQL Server 企业管理器中,更改 master 数据和日志文件的路径。注意:您也可以在此更改错误日志的位置。 2. 在企业管理器中,右键单击 SQL Server,然后单击属性。 3. 单击启动参数,将会显示以下条目:-dD:\MSSQL7\data\master.mdf-eD:\MSSQL7\log\ErrorLog-lD:\MSSQL7\data\mastlog.ldf-d 是 master 数据库数据文件的完全限定路径。-e 是错误日志文件的完全限定路径。-l 是 master 数据库日志文件的完全限定路径。 4. 按如下所示更改这些值: a. 删除 Master.mdf 和 Mastlog.ldf 文件的当前条目。 b. 添加指定新位置的新条目:-dE:\SQLDATA\master.mdf-lE:\SQLDATA\mastlog.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:\Mssql7\Data 移到 E:\Sqldata。 4. 按如下所示重新附加 model 数据库:use master go sp_attach_db 'model','E:\Sqldata\model.mdf','E:\Sqldata\modellog.ldf' go 5. 在企业管理器中,从启动参数框中删除 -T3608 跟踪标记。 6. 停止并重新启动 SQL Server。您可以使用 sp_helpfile 确认文件位置的更改:use model go sp_helpfile go 回到顶端移动 tempdb您可以使用 ALTER DATABASE 语句来移动 tempdb 文件。 1. 按如下所示使用 sp_helpfile 确定 tempdb 数据库的逻辑文件名:use tempdbgosp_helpfilego每个文件的逻辑名均包含在名称列中。该示例使用了默认文件名 tempdev 和 templog。 2. 按如下所示使用 ALTER DATABASE 语句指定逻辑文件名:use mastergoAlter database tempdb modify file (name = tempdev, filename = 'E:\Sqldata\tempdb.mdf')goAlter database tempdb modify file (name = templog, filename = 'E:\Sqldata\templog.ldf')go应当收到以下确认更改的消息:文件“tempdev”在 sysaltfiles 中被修改。重新启动 SQL Server 后会删除旧文件。文件“templog”在 sysaltfiles 中被修改。重新启动 SQL Server 后会删除旧文件。 3. 在 tempdb 中使用 sp_helpfile 将会在重新启动 SQL Server 后才确认这些更改。 4. 停止并重新启动 SQL Server。 无法打开物理文件 "D:\Trip\TripDB\Tripdat.mdf"。操作系统错误 5:"5(拒绝访问。)"。 提示你打不开啊,用的什么帐号登录的,时不时权限不够? 无法打开物理文件 "D:\Trip\TripDB\Tripdat.mdf"。操作系统错误 5:"5(拒绝访问。)"。 ---是不是2000的 库在用这个文件呀,先停数据库复制成另一份到另一个目录附加新目录中的文件 Tripdat.mdf,Triplog.ldf 这两个文件根本没有在使用中,因为这2个文件是从别人机子中拷过来的,我机子里没有SQL SERVER 2000,只有2005 说得这么复杂。其实你只要把存放数据库的那个文件夹添加一个everyone的完全控制权限。应该就可以搞定了。 Sql server2005不支持低版本的! 我也试了 好多次了 只能把 2005的 数据生成脚本 然后在 2000的查询分析器里重新 建了! Sql 2000 连不上本地数据库 高手帮忙,SQL 查询满足条件的记录并再另一个表不存在的记录 谁能帮忙写个数据库表分页的案例! 跨数据库,多数据库如何使用事务处理? 高手帮忙写一句查询SQL,查询结果不显示某列数据为空and为英文字母 关于日期统计问题(高手帮忙啊) 如何在98下用命令启动SQL Server 2000 ? 我恋爱了! 在一个sql语句中能否嵌套调用一个存储过程呀? 高手请进! 用sp_addextendedproperty添加字段描述 用怎么样合并两张表?
标题: Microsoft SQL Server Management Studio Express
------------------------------附加数据库 对于 服务器“CHENCHAO-PC\SQLEXPRESS”失败。 (Microsoft.SqlServer.Express.Smo)有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.3042.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=附加数据库+Server&LinkId=20476------------------------------
其他信息:执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.Express.ConnectionInfo)------------------------------无法打开物理文件 "D:\Trip\TripDB\Tripdat.mdf"。操作系统错误 5:"5(拒绝访问。)"。 (Microsoft SQL Server,错误: 5120)有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.3042&EvtSrc=MSSQLServer&EvtID=5120&LinkId=20476------------------------------
按钮:确定
------------------------------
=================================================
概要
本文描述如何更改任何 SQL Server 7.0、SQL Server 2000 或 SQL Server 2005 数据库的数据和日志文件的位置。
回到顶端更多信息
更改某些 SQL Server 系统数据库的位置必须遵循的步骤与更改用户数据库的位置必须遵循的步骤不同。将分别对这些特殊情况给予说明。
注意:SQL Server 7.0 系统数据库与 SQL Server 2000 不兼容。不要将 SQL Server 7.0 master、model、msdb 或分发数据库附加到 SQL Server 2000。如果您使用的是 SQL Server 2005,则只能将 SQL Server 2005 数据库附加到一个实例。
本文的所有示例都假设 SQL Server 安装在 D:\Mssql7 目录中,而且所有数据库和日志文件都位于默认目录 D:\Mssql7\Data 中。这些示例将所有数据库的数据和日志文件都移到 E:\Sqldata。
回到顶端先决条件
• 从数据库的当前位置备份当前所有数据库,尤其是 master 数据库。
• 必须具有系统管理员 (sa) 权限。
• 必须知道数据库的所有数据文件和日志文件的名称及当前位置。注意:可以使用存储过程 sp_helpfile 来确定数据库所使用的所有文件的名称和当前位置:use <database_name>
go
sp_helpfile
go
• 应可以以独占方式访问被移动的数据库。如果在此过程中出现问题并且无法访问已经移动的数据库,或无法启动 SQL Server,则需要查看 SQL Server 错误日志和 SQL Server 联机丛书以获取这些错误的更多信息。 回到顶端移动用户数据库
以下示例将移动一个名为 mydb 的数据库,该数据库包含一个数据文件 Mydb.mdf 和一个日志文件 Mydblog.ldf。如果您要移动的数据库还有其他数据或日志文件,请在存储过程 sp_attach_db 中用一个逗号分隔的列表将它们全部列出。无论数据库包含多少文件,存储过程 sp_detach_db 都不会更改,原因是它不会列出这些文件。 1. 按如下所示分离数据库:use master
go
sp_detach_db 'mydb'
go
2. 然后,将数据和日志文件从当前位置 (D:\Mssql7\Data) 复制到新位置 (E:\Sqldata)。
3. 按如下所示重新附加指向新位置中这些文件的数据库:use master
go
sp_attach_db 'mydb','E:\Sqldata\mydbdata.mdf','E:\Sqldata\mydblog.ldf'
go
使用 sp_helpfile 确认文件位置的更改:use mydb
go
sp_helpfile
go
filename 列的值应当反映出新的位置。 回到顶端移动 pubs 和 Northwind
使用与移动用户数据库相同的步骤。
回到顶端移动 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:\Mssql8\Data) 移到新位置 (E:\Mssql8\Data)。
5. 在企业管理器中,从启动参数框中删除 -T3608 跟踪标记。
6. 停止并重新启动 SQL Server。
7. 按如下所示重新附加 MSDB 数据库:use master
go
sp_attach_db 'msdb','E:\Mssql8\Data\msdbdata.mdf','E:\Mssql8\Data\msdblog.ldf'
go
注意:如果您试图通过使用跟踪标记 -T3608 启动 SQL Server 来重新附加 msdb 数据库,会收到以下错误:
服务器:消息 615,级别 21,状态 1,行 1
未能找到 ID 为 3,名称为 'model' 的数据库表。 回到顶端如果您使用的是 SQL Server 2005
可以使用 SQL Server 配置管理器来更改 SQL Server 服务的启动参数。有关如何更改启动参数的更多信息,请访问以下 Microsoft Developer Network 网站:
http://msdn2.microsoft.com/zh-cn/library/ms190737.aspx (http://msdn2.microsoft.com/zh-cn/library/ms190737.aspx)
移动 MSDB 数据库后,可能会收到以下错误消息:
错误 229:拒绝了对对象 'ObjectName' (数据库 'master',所有者 'dbo')的执行权限。
发生此问题的原因是所有权链断裂。MSDB 数据库和 master 数据库的所有者不相同。因此,MSDB 数据库的所有权已经发生更改。要解决此问题,请在 Isql.exe 命令行实用工具或 Osql.exe 命令行实用工具中运行以下命令:
USE MSDB
Go
EXEC sp_changedbowner 'sa'
Go
有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
272424 (http://support.microsoft.com/kb/272424/) INF:数据库范围内的对象所有权链检查取决于映射至对象所有者的登录信息
回到顶端移动 master 数据库
1. 在 SQL Server 企业管理器中,更改 master 数据和日志文件的路径。注意:您也可以在此更改错误日志的位置。
2. 在企业管理器中,右键单击 SQL Server,然后单击属性。
3. 单击启动参数,将会显示以下条目:-dD:\MSSQL7\data\master.mdf
-eD:\MSSQL7\log\ErrorLog
-lD:\MSSQL7\data\mastlog.ldf
-d 是 master 数据库数据文件的完全限定路径。-e 是错误日志文件的完全限定路径。-l 是 master 数据库日志文件的完全限定路径。
4. 按如下所示更改这些值: a. 删除 Master.mdf 和 Mastlog.ldf 文件的当前条目。
b. 添加指定新位置的新条目:-dE:\SQLDATA\master.mdf
-lE:\SQLDATA\mastlog.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:\Mssql7\Data 移到 E:\Sqldata。
4. 按如下所示重新附加 model 数据库:use master
go
sp_attach_db 'model','E:\Sqldata\model.mdf','E:\Sqldata\modellog.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:\Sqldata\tempdb.mdf')
go
Alter database tempdb modify file (name = templog, filename = 'E:\Sqldata\templog.ldf')
go
应当收到以下确认更改的消息:
文件“tempdev”在 sysaltfiles 中被修改。重新启动 SQL Server 后会删除旧文件。文件“templog”在 sysaltfiles 中被修改。重新启动 SQL Server 后会删除旧文件。
3. 在 tempdb 中使用 sp_helpfile 将会在重新启动 SQL Server 后才确认这些更改。
4. 停止并重新启动 SQL Server。
提示你打不开啊,
用的什么帐号登录的,时不时权限不够?
---是不是2000的 库在用这个文件呀,先停数据库复制成另一份到另一个目录附加新目录中的文件
我也试了 好多次了
只能把 2005的 数据生成脚本 然后在 2000的查询分析器里重新 建了!