2013-02-25 63 views
1

我最近開始將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在啓用此觸發器時在編輯器中顯示錯誤。

回答

1

我能夠簡單地通過在轉換上從本機SQL驅動程序切換到MS SQL驅動程序來解決此問題。我仍然不知道爲什麼這會起作用,爲什麼這會導致兼容性問題。

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 
) 
) 

注:「保持相同的連接=真正的」這裏「驗證外部元數據」 =假沒有幫助/工作。