使用复制数据库向导时发生超时过期错误


8

微软让我相信,SQL Server 2012复制数据库向导是将SQL Server 2000数据库复制到SQL Server 2012的最佳方法。经过几个小时的努力,我得以解决一些问题,并且能够导入到将中等大小的SQL Server 2000数据库转换为SQL Server 2012。

但是,对于30GB的数据库,该向导始终会失败,并出现以下错误:

消息:传输数据时发生错误。有关详细信息,请参见内部异常。
StackTrace:在Microsoft.SqlServer.Dts.Tasks.TransferObjectsTask.TransferObjectsTask.TransferDatabasesUsingSMOTransfer()
处的Microsoft.SqlServer.Management.Smo.Transfer.TransferData()
InnerException->超时已过期。在操作完成之前超时或服务器没有响应。
CREATE DATABASE失败。列出的某些文件名无法创建。检查相关错误。
StackTrace:
位于System.Data.SqlClient.SqlConnection.OnError(SqlException异常,布尔值BreakConnection),
位于System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()
在System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj)

我已经仔细检查过,这不是文件路径,权限或磁盘空间问题。我认为该CREATE DATABASE步骤需要2分钟左右的时间,并且向导假定操作已超时。我手动创建了一个具有相同文件路径的空数据库,并使用SQL进行了文件大小调整,这是可行的。有趣的是,一个1GB的数据库副本由于相同的错误而失败,并在第二次尝试中成功。

请帮忙。


请参阅Aarons答案。对于您的数据库,这是一种更为有效的方式
Ali Razeghi 2012年

Answers:


7

与弄乱该向导相比,更有效的途径是:

  1. 对您的2000数据库进行完整备份。
  2. 将其还原到SQL 2005、2008或2008 R2实例,所有实例均支持2000数据库。如果您没有任何适用的实例,仍可以在此处获得2008 R2评估版。请注意,Express无法使用,因为根据版本不同,它具有4GB / 10GB的数据文件限制。
  3. 使用将兼容性级别更改为80以上(90或100,取决于您使用的是2005还是2008/2008 R2)ALTER DATABASE
  4. 不再处于80兼容模式后,请对该数据库进行完整备份。
  5. 将此新备份还原到您的SQL Server 2012实例。
  6. 将兼容性级别更改为110并更新统计信息。
  7. 测试

我已经安装了SQL 2012,如果我在同一台计算机上安装SQL 2008 R2,可以吗?安装顺序重要吗?
Salman A

是的,您可以在同一台计算机上安装2008 R2,但是为了简单起见,只需安装数据库引擎,而无需安装客户端工具等等。您可以卸载2008 R2实例一旦你移动所有的2000和数据库关闭2000
阿龙贝特朗

1
我建议不要在生产计算机上安装不需要的版本,但是不会,它不会干扰,但是您可能会收到有关共享组件的警告。不过,作为一般规则,切勿在产品上安装不需要的产品。它增加了攻击的安全表面积,引入了错误并增强了管理。
Ali Razeghi 2012年

1
@Ali您怎么知道Salman所说的机器是生产机器?还是不是唯一可用的机器?
亚伦·伯特兰

这就是为什么我指定“按生产”而不是“不做”,然后回答“但不干扰”。至于只有可用的计算机,您甚至可以将它们安装在台式机上,并且如上所述,他的数据库为30GB。具有30GB免费存储空间的计算机非常普遍,但同样,它只是建议,而不是硬性的“这是唯一的答案”。我看了他的博客,他非常专注于开发,这意味着他很有可能不像运维人员那样参与运维最佳实践。我认为这是一个很好的建议,我惊讶有这么多人在不必时进行产品开发。
Ali Razeghi 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.