使用OLE DB命令转换的SSIS包错误

问题描述:

我最近开始将MS SQL Server 2005实例升级到MS SQL 2012.我创建了一个虚拟机并安装了MS SQL Server,并使用备份在新服务器上创建了数据库。使用OLE DB命令转换的SSIS包错误

在Visual Studio中,我将旧连接切换到新连接,并且当我切换包含命令"UPDATE JOB SET Active = 0 WHERE Job.JobId = ?"的OLE DB命令转换的连接时,我收到以下错误。

错误1验证错误。

Sync Jobs: Sync Jobs: SSIS Error Code 
DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 
0x80004005. An OLE DB record is available. Source: "Microsoft SQL 
Server Native Client 11.0" Hresult: 0x80004005 Description: "The 
metadata could not be determined because statement 'REVERT  
--Check if SSB is enabled in this database' in procedure 'sp_send_dbmail' 
does not support metadata discovery.". JobPack.dtsx 0 0 

错误2验证错误。

Sync Jobs: Sync Jobs: Unable to retrieve 
destination column descriptions from the parameters of the SQL 
command. JobPack.dtsx 0 0 

我检查,以确保这个“SSB”是在新的DB(这不是),但即使启用它后,我仍然无法解决此错误。我切换回旧的服务器,它工作正常...

UPDATE: 我想知道其中的电子邮件程序来发挥作用,我发现数据库有更新的电子邮件时触发。禁用此触发器可解决SSIS包问题。我仍然不知道为什么BIDS在启用此触发器时在编辑器中显示错误。

我能够简单地通过在转换上从本机SQL驱动程序切换到MS SQL驱动程序来解决此问题。我仍然不知道为什么这会起作用,为什么这会导致兼容性问题。

我遇到了类似的错误。

An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 Description: "The metadata could not be determined because statement '....' uses a temp table.". 

解决。

如果SP使用#table or ##table并且它在SP中使用,那么我们需要指定#table结构以及EXEC

SP应该与结构一起给出。

EXEC SP_TestTemp 1,2 

应给予像

EXEC SP_TestTemp 1,2 WITH RESULT SETS 
(
(
id  int, 
Marks int 
) 
) 

注:“保持相同的连接=真正的”这里“验证外部元数据” =假没有帮助/工作。