题
我在网络上有一个特定的系统,我们需要在其中维护培训安装。该系统使用SQL Server 2000作为其数据库引擎,我需要建立一个系统来定期使用生产数据库中的数据刷新训练数据库中的数据。
我想使用 SSIS,因为我们有 SQL 2005 服务器,我可以从中运行该流程。我有相当多的 SQL 经验,但对 SSIS 的经验不多。我一直在尝试使用“传输数据库任务”来执行此操作,但运气不佳,因为它总是抛出错误。
如果我们忽略配置项等的使用并假装所有数据库名称等都是硬编码的,我有以下内容:具有以下属性的单个 SSIS“传输数据库任务”:
- 目的地覆盖:真的
- 行动:复制
- 方法:数据库在线
我收到的错误是:
错误:任务的 Execute 方法返回错误代码 0x80131500(错误:errorCode=-1073548784 description=执行查询“EXEC dbo.sp_addrole @rolename = N'XXXXX'”失败,并出现以下错误:“当前数据库中已存在角色‘XXXXX’。”。可能的失败原因:查询问题、“ResultSet”属性设置不正确、参数设置不正确或连接未正确建立。helpFile = helpContext = 0 idofInterfaceWithError = {8BDFE893-E9D8-4D23-9739-DA807BCDC2AC})。Execute 方法必须成功,并使用“out”参数指示结果。
我确信这里发生了一些明显的事情,但是如果任务设置为覆盖角色的预先存在应该不重要吗?有谁知道我需要做什么才能使其正常工作?
解决方案
显然这应该在 SQLServer 2005 SP2 中修复 看这里. 。如果您从 Visual Studio 中运行 SSIS 包,那么您似乎还需要确保修补客户端计算机。