2013-02-08 107 views
3

我正在處理現有的SSIS包以向其添加自定義日誌記錄。我試圖對其進行測試,並且我有一個執行SQL任務,我沒有創建那個會得到以下錯誤。SSIS執行SQL查詢任務找不到存儲過程

執行查詢

"ap_pfl_DropProfileTables"

失敗,出現以下錯誤:

"Could not find stored procedure 'ap_pfl_DropProfileTables'.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

我不知道爲什麼,因爲我得到這個錯誤:

  1. 我沒有創建或更改它,並且此包在生產中運行時沒有錯誤。
  2. 存儲過程只是截斷兩個表。它沒有結果集或參數。
  3. 連接工作正常,因爲此存儲過程與另一個線程同時運行,該線程正在運行成功運行的數據流任務,並且只使用此包中的兩個連接。
  4. 我已經雙重和三重檢查數據庫,以確保存儲過程在那裏,並拼寫正確。我甚至在存儲過程中檢查了這些字母的大小寫。

有關如何解決此問題的任何想法?

+5

你確定你的連接字符串指向正確的位置嗎? sproc是否存在於給定的模式中?執行存儲過程的帳戶是否具有訪問它的正確權限? – Goose 2013-02-08 17:44:31

+0

連接字符串很好,因爲同時運行的數據流任務使用相同的連接,並且無錯地成功完成。我正在使用系統管理員帳戶,所以是有權訪問。存儲過程是在dbo – nleidwinger18 2013-02-08 17:51:53

+0

下創建的。是否在任何時候都更改了參數和/或它們是否正確映射? – Goose 2013-02-08 18:07:46

回答

2

是的,這是令人沮喪的 - 但可以。關鍵是不使用ADO.NET連接管理器,而是使用良好的老式ADO連接管理器。第二個關鍵是不要在執行SQL任務編輯器的SQLStatement屬性中使用EXEC或EXECUTE。只需輸入存儲過程的名稱(也可以使用3部分名稱約定database.schema.storedprocedure)。

我還沒有在存儲過程中用PARAMS嘗試過。另外,我還沒有嘗試過使用OLE DB連接管理器。

1

我碰到了這個自己,這裏是我做過什麼(用ADO.NET連接)

在將SQLStatement場,我把我的存儲過程(dbo.myStoredProc)的名稱。 然後我將IsQueryStoredProcedure屬性設置爲「真」

我在想,當IsQueryStoredProcedure設置爲true時,對象會自動預先EXEC以識別該命令是存儲過程調用。

0

我知道這是一箇舊的線程,但我在SQL 2008 R2上使用SSIS時遇到了這個問題。

對於ADO.NET連接,我實際上必須將IsQueryStoredProcedure設置爲False,然後錯誤消失。我是否使用EXEC並不重要。