日期:2014-05-20  浏览次数:21099 次

SQL Sever 2005在附加数据库是无法附加
下面是错误提示 请高手帮忙解决下 谢谢



附加数据库 对于 服务器“WU-PC”失败。  (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

------------------------------
程序位置:

   在 Microsoft.SqlServer.Management.Smo.Server.AttachDatabase(String name, StringCollection files, String owner)
   在 Microsoft.SqlServer.Management.SqlManagerUI.AttachDatabaseData.PrimaryFile.Attach()
   在 Microsoft.SqlServer.Management.SqlManagerUI.AttachDatabase.SendDataToServer()

===================================

执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.Express.ConnectionInfo)

------------------------------
程序位置:

   在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType)
   在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(StringCollection sqlCommands, ExecutionTypes executionType)
   在 Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery(StringCollection queries)
   在 Microsoft.SqlServer.Management.Smo.Server.AttachDatabaseWorker(String name, StringCollection files, String owner, AttachOptions attachOptions)
   在 Microsoft.SqlServer.Management.Smo.Server.AttachDatabase(String name, StringCollection files, String owner)

===================================

未能在 sysindexes 中找到数据库 ID 14 中对象 ID 1 的索引 ID 1 对应的行。请对 sysindexes 运行 DBCC CHECKTABLE。
Could not find row in sysindexes for database ID 14, object ID 1, index ID 1. Run DBCC CHECKTABLE on sysindexes.
未能打开新数据库 'flower_DB'。CREATE DATABASE 将终止。 (.Net SqlClient Data Provider)

------------------------------
有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=602&LinkId=20476

------------------------------
服务器名称: WU-PC
错误号: 602
严重性: 21
状态: 50
行号: 1


------------------------------
程序位置:

   在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
   在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
   在 System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async)
   在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
   在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType)


------解决方案--------------------
你看看你那个数据库和你要附加的数据库的登录名是不是一样的  如果不同就会出错的
------解决方案--------------------
你的数据库版本是不是不一样啊?一般情况下数据库版本不能向上兼容的


  错误602:未能在sysindexes中找到数据库id 7中对象id 1的索引id 1 对应的行.请对sysindexes运行dbcc checktable
     我在学习asp.net的时候,经常需要将别人的数据库(位于appData目录下的*.MDF文件)附加到我的 

SQL server中,可是当我使用“所有任务-->附加”的时候,经常出现下列错误: 

错误602:未能在sysindexes中找到数据库ID11中对象ID1的索引ID1对应的行,请对sysindexes运行 

DBCC CHECKTABLE。 

我郁闷啊,到底为什么啊??????
 
回答:
 
遇到这种情况首先核对一下51aspx上源码所表明的开发环境(如 VS2005+Sql2005),如果是采用sqlServer2005的话你用Sql2000附加Sql2005的数据库就会出现这种错误(解决方法:改用SqlServer2005附加一下,如果还想用Sql2000格式那就用导出sql语句等方式进行转换) 

转csdn的解决办法 

直接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新建的库