2013-10-17 96 views
0

我有一個連接到數據庫的SSIS包。我把數據庫放下來測試一個場景,但是當DB在脫機狀態下啓動包時,在輸出窗口中給我提供以下錯誤:SSIS包DB連接檢查

SSIS錯誤代碼DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。 AcquireConnection方法調用連接管理器「DBNAME」失敗,錯誤代碼爲0xC0202009。在此之前可能會發布錯誤消息,並提供更多關於爲什麼AcquireConnection方法調用失敗的信息。

我需要檢查包運行時的連接並通過電子郵件通知用戶數據庫已關閉。我會如何去做這件事?

我有發送電子郵件的代碼,我只需要在程序包運行時進行數據庫檢查。

回答

0

我Finnally得到它的工作。我所做的是,創建一個包含數據庫設置,數據源,初始目錄等的XML文件。然後添加一個腳本任務,添加一些代碼以從XML文件中讀取設置並創建一個SQLConnection並嘗試連接到數據庫抓住。如果發生錯誤發送電子郵件,並在finnaly關閉SQL連接。

但爲了使這個工作,你必須確保你的連接具有屬性'DelayValidation'設置爲TRUE。如果不是,那麼在執行腳本任務之前,程序包將無法獲得連接。

0

使用腳本任務。嘗試打開與數據庫的連接,如果失敗,則Dts.TaskResult = Dts.Results.Failure。

一個偉大的一篇關於這個問題在這裏:

http://social.msdn.microsoft.com/Forums/sqlserver/en-US/7de0216b-3a0a-40ce-8149-f566a05010c9/ssis-check-database-connection-and-if-disconnected-send-email-alert?forum=sqlintegrationservices

+0

問題是,只要我的軟件包啓動,它不會執行任何操作,因爲它無法獲得與數據庫的連接。 – user2890243

+0

您不需要將數據源添加到包中。只需添加一個腳本任務。 – Jonysuise

+0

我試過了,它沒有幫助。它沒有進入腳本任務,它只是開始並完成說:SSIS錯誤代碼DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER。 AcquireConnection方法調用連接管理器「DBNAME」失敗,錯誤代碼爲0xC0202009。在此之前可能會發布錯誤消息,並提供更多關於爲什麼AcquireConnection方法調用失敗的信息。 – user2890243

0

讓你的數據庫檢查發生你的包之外。包是如何運行的?預定在SQL代理中還是由用戶啓動?不要只運行DTEXEC,首先運行檢查連接性的腳本,即使用SQLCMD.EXE。

但是更好的方法是像平常那樣運行軟件包,然後檢查SSIS日誌併發送適當的消息。否則,您將完成所有不同類型的自定義預執行檢查以運行。

我不是批處理腳本專家,但這裏有一些代碼可用於測試與SQL Server的連接,如果失敗則調用另一批處理腳本,否則請使用DTEXEC運行包。

SQLCMD -S YOurServer -E -Q "SELECT @@VERSION" 
IF ERRORLEVEL 1 (
     CALL YourEmailScript.CMD 
) 
ELSE 
(
DTExec /f "\\pathtodtsxfile\file.dtsx" 
) 

這不是生產質量代碼。我不推薦以這種方式調用你的DTEXEC,這只是一個例子。

+0

我通過像這樣的批處理文件運行該文件: DTExec/f「\\ pathtodtsxfile \ file.dtsx」 – user2890243

+0

我已經更改了我的代碼以包含您的命令行。 –

+0

沒有幫助呢? – user2890243