2012-06-05 113 views
6

我正在使用SSIS與VS2010(外殼)和數據庫從SQL Server 2005(32位)到SQL Server 2012(64位)。我直接在目標服務器上開發(不是最優的,但它工作)。SSIS傳輸數據庫任務隱蔽錯誤消息0x80131500

當我嘗試使用傳輸數據庫任務,它給了我一個錯誤信息如下: 「錯誤:在傳輸數據時返回錯誤代碼0x80131500(出錯任務的執行方法,請參閱內部異常。詳細信息)。Execute方法必須成功,並使用「out」參數指示結果。「 Error message

這是問題......我如何查看「內部異常」?它是一個無法通過代碼的GUI界面!我甚至試過setting up logging - 它只記錄相同的無用的錯誤信息。

Microsoft在其參考文檔中沒有關於此錯誤代碼的信息(我可以找到)。

在googleing錯誤代碼之後,我看到其他人有這個錯誤代碼以及與用戶,角色和創建它們有關的消息。

  • 我雙重檢查,我有兩個服務器上的系統管理員權限,並在兩個
    登錄。
  • 我試圖從每個 服務器到它自己(更改數據庫名稱)和相同的傳輸數據庫任務,工作 自己罰款。
  • 我嘗試了DatabaseOnline和DatabaseOffline選項。 (同樣的錯誤,兩種方式)
  • 我在做傳輸數據庫任務之前,嘗試做一個「傳輸登錄」任務,該任務工作,但不是傳輸數據庫任務。然後它開始拋出錯誤,指出數據庫不存在 - 這意味着我需要在傳輸數據庫之後傳輸登錄信息。

這裏是我的設置:enter image description here

我在做什麼錯? 如何獲取「內部異常」信息?

而且,按照我的職位,以微軟的論壇,在這裏: http://social.technet.microsoft.com/Forums/en-US/sqlintegrationservices/thread/cda53c80-8da6-4ed1-898a-9f3ff8464ae2

+0

轉移登錄後,你可以刪除這些並給它一個鏡頭嗎?這會有什麼幫助嗎? – rvphx

+0

刪除什麼?我剛剛轉移的登錄信息? – Watki02

+0

您記錄的所有事件是什麼?只是OnError和OnTaskFailed?抓住OnInformation和OnWarning,因爲他們可能會指出還有什麼問題。另一個選項可能是[DTLoggedExec](http://dtloggedexec.codeplex.com/)從來沒有玩過這個任務,所以我不能說你遇到的錯誤的詳細信息 – billinkc

回答

6

這個答案讓我生病,我的胃...我希望我拯救別人這個麻煩。問題是這樣的:

  1. 首先和最重要的是:錯誤信息是不夠描述。該錯誤應該交給界面。
  2. 在「傳輸數據庫」任務的「編輯」下,目標文件路徑將與源數據庫的文件路徑「自動填充」。他們第一眼看起來很正確(第二,第三......)粗略的一瞥。在進一步檢查文件路徑錯誤。這是合理的,如果你正在從版本到版本 - 文件夾根據版本(MSSQL.1MSSQL11.<instanceName>)細微的差異命名。

總之,錯誤是由於路徑設置錯誤導致文件夾不存在。我想象這樣的其他低級異常也會被帶有相同隱蔽錯誤信息的接口所使用。

+0

你能相信我遇到了完全相同的場景和我有完全相同的錯誤?但我的文件路徑是正確的...任何建議? – Diego

+0

正如我答案的最後一行所表明的那樣,它可能是一個低級別異常,例如不良路徑名稱。檢查數據庫權限,文件系統權限,雙重檢查路徑......任何可能通常會拋出一個簡單的描述性錯誤消息框並且有幫助的東西。還可以通過SQL Server Management Studio嘗試任何您的任務(例如SSMS中的「傳輸數據庫」==「複製數據庫」),這可能會泄露您的錯誤代碼(因此SSIS/SSDT悲慘地進入)。 – Watki02

0

"which implies that I need to transfer logins AFTER I transfer databases."

不是真的,登錄上一臺服務器(實例)水平,所以您可以傳輸登錄,然後數據庫。您將需要擔心用戶以後,當然

在這裏的一點,我不認爲SSIS將準備轉移2005年 - > 2012年。我的意思是,「跳過」一個版本是沒​​有意義的。你說你正在使用VS 2012,所以它會是SSIS 2012.它認爲它只能讀取2008年的數據庫。你在同一臺服務器上測試過的事實也證明了這一點。

+0

我正在使用(visual studio)2010,而不是2012.它還獨立於** BOTH **服務器(SQL 2005 _AND_ SQL 2012),但不能從一個到另一個。我會更新我的帖子,使其更清晰 - 謝謝!這就是說,這仍然可能是答案......是否必須是SQL 2008的完整版本?或者我可以使用Express版本? – Watki02

+0

是的,這是一個錯字,我打算寫VS2010,SSIS 2012。 關於該版本,你應該沒問題與快遞 – Diego

+0

我剛剛嘗試過SQL 2008 Express,它失敗了。請參閱我的更深入的解釋:http://social.technet.microsoft.com/Forums/en-US/sqlintegrationservices/thread/cda53c80-8da6-4ed1-898a-9f3ff8464ae2 – Watki02

1

我們遇到過這種情況,有人告訴我們MySQL數據庫中的列中總會有一個有效的日期,我們後來發現有像'0000-00-00 00:00:00''0001-01-01 00:00:00'這樣的日期。

我們處理它,使用一個case語句的壞日期轉換爲日期SSIS可以用在提取數據查詢:

CASE WHEN Product.PurchaseDate < '1900-01-01 00:00:00' THEN '1900-01-01 00:00:00' ELSE Product.PurchaseDate END AS PurchaseDate 

當然,你可以將其設置爲null也,你選擇。

+0

這解決了我的問題。謝謝! – Jondlm

1

我也有這個相同的問題,它原來是一個訪問問題。嘗試提供這些訪問文件夾的mdf和ldf文件將登陸:NT Service \ MSSQLSERVER,所有者創建者,系統

0

這是舊的,但我碰到了與SSMS 17.2相同的神祕消息。我試過並檢查了上面的所有建議都無濟於事。 在我的情況下,問題與Visual Studio 2017中SSIS項目的TargetServerVersion屬性有關。默認情況下,它被設置爲SQL Server 2017,而本地服務器是SQL Server 2014 - 一旦更改爲相同版本,一切都很順利。

相關問題