2008-10-15 87 views
2

嘿,我一直在这个问题上一段时间,通常的谷歌搜索没有帮助:(SQL DTS数据库副本失败

我在SQL 2000我想它复制生产数据库这是一个训练数据库的顶部来刷新它,我希望这是一个计划每周发生一次,以保持训练数据库的最新版本

我有一个创建DTS作业。那DTS工作我有一个“复制SQL Server对象”任务,该任务设置为:

  • Cre吃了所有复制的对象
    • 放置目标对象第一
  • 复制数据
    • 替换现有的数据
  • 复制索引,触发器,主键和外键
  • 复制所有用户表,视图,函数和存储过程。

当我运行这个DTS包(在生产前对课程的测试),它得到99%完成,引发以下错误:

Step Error Source: Microsoft SQL-DMO (ODBC SQLState: 42S02) 
Step Error Description:[Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'dbo.vwEstAssetStationAddress'. 
Step Error code: 800400D0 
Step Error Help File:SQLDMO80.hlp 
Step Error Help Context ID:1131 

我在网上搜索没有提供很多帮助。有这些错误的报道受到打击,但没有一个符合我的情况。我发现的一个建议是sysdepends表已经损坏,使得DTS作业以错误的顺序运行它的脚本。 Howeever,我跑了下面的脚本来更正表,它仍然抛出了同样的错误:

USE master 
GO 
ALTER DATABASE [DATABASE NAME] 
SET SINGLE_USER 
GO 

USE [DATABASE NAME] 
GO 

DBCC CHECKTABLE('sysdepends',REPAIR_REBUILD) 
GO 

USE master 
GO 
ALTER DATABASE [DATABASE NAME] 
SET MULTI_USER 
GO 

我也看到,不同对象所有者可能会导致这个错误。但我已经确认在这种情况下所有对象都属于dbo用户。

有什么建议吗?

回答

0

不知何故dbo.vwEstAssetStationAddress表格未被DTS包发现。不幸的是,该消息没有说明它是否在源或目的地上找不到它。

准确的步骤是什么,按照您的DTS包中的顺序排列?我假设上面的任务项目列表不是按顺序排列的。我知道这不是一个答案,但看起来我们需要更多的信息来帮助你进一步。

0

感谢您的反应hectorsosajr。

aparrently导致错误的对象(dbo.vwEstAssetStationAddress)是引用2个基础表的视图。我测试了查看视图,以及在源数据库和目标数据库上运行定义它的SELECT语句,并且它工作正常。

DTS中的数据库对象复制任务不允许您指定它传输事物的顺序。据我了解,它使用sysdepends表来确定必需的事件顺序。

0

听起来像它试图创建存储过程/视图基于尚不存在的视图。

为什么不只用不同的名称备份和恢复数据库? (如果不是生产,我会说分离,复制和重新附加)。你可以在T-SQL的控制下完成所有这些。

看看this link可以帮助你找到你的依赖问题。

0

我试图避免通过备份/恢复来做到这一点。有一些数据库用户是SQL Server帐户(不是Active Directory)。这成为一个痛苦,但如果你需要从一台服务器到另一台服务器,你必须删除这些用户并重新创建它们。

+0

尝试将我添加到我的答案中的链接 - 它可以帮助您隔离您的依赖问题。 – 2008-10-15 03:04:28

0

我已经运行另一个测试来尝试隔离这个。我完全从目标数据库中删除了提到的视图,然后再次运行DTS。它以相同的错误失败。但是,通常是无效的对象名称的视图已成功重新创建。看起来错误来自于试图引用该视图的某些内容,但是当它遇到该错误时并不实际上停止该脚本。

凯德 - 我会检查出这个链接。我也会尝试建立引用视图和突破的东西。

2

我觉得自己很蠢,但我张贴我只是找到了后人的答案(等你有帮助的同伴可以停止强调代表我。

即使我有选择的所有用户表,视图,存储过程和用户定义的函数来复制,我没有选择“包括所有的依赖对象”,我假定如果你选择了两个对象来复制,而另一个依赖于另一个,SQL总是会按照正确的顺序进行。不是,选择这个小小的复选框让所有的区别变得非常重要

再次感谢那些帮助建议的人

+0

很高兴你找到了解决方案!感谢您发布它。 – 2008-10-15 04:42:26