我最近开始将MS SQL Server 2005实例升级到MS SQL 2012.我创建了一个VM并安装了MS SQL Server,并使用备份在新服务器上创建了数据库。
在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”已启用(它没有),但即使启用它后,我仍然无法解决此错误。我切换回旧服务器,它工作正常......
更新 我想知道电子邮件程序在哪里发挥作用,我发现数据库有一个触发器,在更新时发送电子邮件。禁用此触发器可解决SSIS包问题。我仍然不知道为什么BIDS在启用此触发器时在编辑器中显示错误。
答案 0 :(得分:1)
我能够通过在转换时从Native SQL Driver切换到MS SQL Driver来解决此问题。我仍然不知道为什么会这样,以及为什么会导致兼容性问题。
答案 1 :(得分:0)
我遇到了类似的错误。
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
)
)
注意:'retain same connection = true'和'validate external metadata'= false在这里无效/工作。