我有两个文件 myData.mdf 和myData_log.ldf(确保是sql2005)
现在我附加数据库的时候报错,错误信息如下:附加数据库对于服务器"TEST-OM4UU"失败。
其他信息
未能在sysindexes中找到ID9中对象ID1的缩影ID1对应的行。请对sysindexes运行DBCC CHECKTABLE
现在我附加数据库的时候报错,错误信息如下:附加数据库对于服务器"TEST-OM4UU"失败。
其他信息
未能在sysindexes中找到ID9中对象ID1的缩影ID1对应的行。请对sysindexes运行DBCC CHECKTABLE
DBCC CHECKTABLE检查下
有错误的地方重建索引
解决方案:因为数据库附加到2005的时候, 数据库文件已经自动升级到2005, 所以在2000下是无法再附加的(没有向上兼容的)直接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新建的库
-- 在"选择源表和源视图"中, 选择所有的表
-- 最后完成
USE [master]
GO
CREATE DATABASE [myData] ON
( FILENAME = N'C:\Documents and Settings\Administrator\Desktop\WebSite\myData.mdf' ),
( FILENAME = N'C:\Documents and Settings\Administrator\Desktop\WebSite\myData_log.ldf' )
FOR ATTACH
GO
if not exists (select name from master.dbo.sysdatabases sd where name = N'myData' and SUSER_SNAME(sd.sid) = SUSER_SNAME() ) EXEC [myData].dbo.sp_changedbowner @loginame=N'sa', @map=false
GO输入错误:
Msg 1813, Level 16, State 2, Line 1
未能打开新数据库 'myData'。CREATE DATABASE 将终止。
Msg 602, Level 21, State 50, Line 1
未能在 sysindexes 中找到数据库 ID 9 中对象 ID 1 的索引 ID 1 对应的行。请对 sysindexes 运行 DBCC CHECKTABLE。
Msg 602, Level 21, State 50, Line 1
Could not find row in sysindexes for database ID 9, object ID 1, index ID 1. Run DBCC CHECKTABLE on sysindexes.