Sql server SQL DTS数据库复制失败

Sql server SQL DTS数据库复制失败,sql-server,sql-server-2000,dts,Sql Server,Sql Server 2000,Dts,嘿,大家好,我研究这个问题已经有一段时间了,通常的谷歌搜索没有帮助:( 我在SQL 2000中有一个生产数据库。我希望将其复制到培训数据库的顶部以刷新它。我希望这是计划每周进行一次的操作,以使培训数据库保持最新 为此,我创建了一个DTS作业。在该DTS作业中,我有一个“复制SQL Server对象”任务。该任务设置为: 创建所有复制的对象 首先删除目标对象 复制数据 替换现有数据 复制索引、触发器、主键和外键 复制所有用户表、视图、函数和存储过程 当我运行这个DTS包(当然是在预生产

嘿,大家好,我研究这个问题已经有一段时间了,通常的谷歌搜索没有帮助:(

我在SQL 2000中有一个生产数据库。我希望将其复制到培训数据库的顶部以刷新它。我希望这是计划每周进行一次的操作,以使培训数据库保持最新

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

  • 创建所有复制的对象
    • 首先删除目标对象
  • 复制数据
    • 替换现有数据
  • 复制索引、触发器、主键和外键
  • 复制所有用户表、视图、函数和存储过程
当我运行这个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
我在网上的搜索没有提供太多帮助。有报告说这些错误被击中,但没有一个与我的情况相符。我发现的一个建议是SysDependes表已损坏,使DTS作业以错误的顺序运行其脚本。但是,我运行以下脚本来更正该表,它仍然抛出t他犯了同样的错误:

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用户所有的


有什么建议吗?

不知何故,您的DTS包找不到dbo.vwEstAssetStationAddress表。不幸的是,消息没有说明它是否在源或目标上找不到它


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

感谢hectorsosajr的回复

当前导致错误的对象(dbo.vwEstAssetStationAddress)是一个引用2个基础表的视图。我已经测试了在源数据库和目标数据库上查询该视图,以及运行定义该视图的SELECT语句,并且效果良好


DTS中的数据库对象复制任务不允许您指定它传输内容的顺序。据我所知,它使用sysdepends表来确定事件的必要顺序。

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

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


查看是否有助于您查找依赖项问题。

我试图避免通过备份/还原来执行此操作。该数据库的某些用户是SQL Server帐户(不是Active Directory)。这将成为中的一个难题,但如果您需要从一台服务器到另一台服务器执行此操作,因为您必须删除这些用户并重新创建他们。

我已运行另一个测试来尝试隔离此问题。我已从目标数据库中完全删除了提到的视图,然后再次运行DTS。该操作失败,并出现相同的错误。但是,当前的视图是一个Invalid对象名称已成功重新创建。错误似乎来自尝试引用该视图的某个对象,但当遇到该错误时,它实际上并没有停止脚本


Cade-我将查看该链接。我还将尝试确定引用视图和中断的内容。

我觉得自己很愚蠢,但我正在发布我刚刚为后代找到的答案(因此,所有乐于助人的人都可以停止为我强调)

尽管我已经选择了要复制的所有用户表、视图、存储过程和用户定义函数,但我没有选择“包含所有从属对象”。我假设,如果您选择了两个要复制的对象,并且其中一个对象依赖于另一个对象,SQL将始终按照正确的顺序进行复制。可能不是。选择此小复选框会产生很大的不同


再次感谢那些提供建议的人

试试我在答案中添加的链接,它可能会帮助你隔离依赖问题。