2013-05-30 249 views
5

我有一個SSIS項目,其中我定義了一個數據源(提供程序:本機OLE DB/Microsoft OLE DB提供程序用於SQL Server)。當我手動打開並點擊「測試連接」按鈕時,一切正常。連接管理器可以使用連接字符串,用戶和密碼訪問數據庫。SSIS連接管理器登錄失敗

現在我有一個SSIS包,其中我創建了一個基於此數據源的連接管理器(「來自數據源的新連接...」)。

在包控制流中,我有一個SQL任務,它具有連接類型OLE DB,並且在此包中連接設置爲我的連接管理器。該任務向數據庫引發了一些更新聲明,根本看上去很花哨。

現在,當我調試了整個事情,我總是得到同樣的錯誤:

Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80040E4D. An OLE DB record is available. Source: "Microsoft OLE DB Provider for SQL Server" Hresult: 0x80040E4D Description: "Login failed for user 'myUser'."

FYI:MYUSER等於我有我的數據庫的用戶名。

所以我的問題是:我在這裏錯過了什麼?我真的不明白這裏有什麼問題。我真的被困在這裏。任何提示非常感謝!

+0

Ddi你在BIDS或通過SQL服務器代理運行包? – Maximus

+0

在BIDS中,我只需點擊F5(開始調試) – BaseBallBatBoy

+0

您的解決方案中是否有其他軟件包?嘗試 - >右鍵單擊您的軟件包並單擊執行軟件包選項。 – Maximus

回答

4

ProtectionLevel「DontSaveSensitive」表示密碼將不會保存在SSIS包中。 SSIS這樣做的原因是,密碼不會在其他人可以獲取的地方浮動。

所以,當你輸入密碼並點擊「測試連接」按鈕時,它一切正常。但是,當您以調試模式(或在生產中)運行時,您沒有密碼。因此,當然,登錄失敗。

這就是爲什麼你需要一個配置文件。 See my answer here

You create a configuration file for the connection string, but the password won't get saved to the configuration file either. You will have to edit the configuration file manually if you want it to include a password. But the best way to do this is to configure the password when you schedule the job that executes the SSIS package. That keeps the password in a safe place, and it isn't floating around all over the place with the SSIS package.

當你正在調試,當然,你需要有手動鍵入到它的密碼的配置文件。但是,配置文件在部署到生產環境時不會與該包一起使用。生產配置文件應該有一個空白密碼。密碼應該存在於執行包的預定作業中。

+0

我的理解有些問題:我有DontSaveSensitive,但在我的數據源連接管理器中實際存在用戶和密碼以及保存我的密碼選項。關於你的回答,這不是衝突嗎?另外:爲什麼不改變EnrcyptSensitiveWithUserKey或EnryptSensitiveWithPassword?最後但並非最不重要的:我只是想測試我的包,如果它運行良好。我怎樣才能以最快的方式做到這一點? – BaseBallBatBoy

+0

看起來它正在保存用戶標識和密碼,但事實並非如此。在你鍵入它來測試連接之後,它會保持它一段時間,所以它看起來像在工作,但是它會停止工作。這很混亂。但是SSIS就是這樣做的。加密選項是一個不同的故事,並且更加不易使用。添加一個配置文件,並手動編輯XML以輸入密碼。 – criticalfix

+0

實際上,您在通過BIDS運行時不需要配置文件。如果您重新打開了包裹,那麼如果您的保護等級爲「不保存敏感」,則需要再次輸入密碼。但在你的情況下,似乎你可能錯過了一些東西。查看包中是否有其他連接管理器可用。並檢查您是否選擇了您測試過的同一個連接管理器。 – Maximus

0

我已經在BIDS中解決了這個問題。

1)首先,如果您沒有配置文件,並且在連接管理器中使用了sql server身份驗證,那麼您會在ole db源或目標任務中獲得一個紅叉。它不會在執行sql任務中發生,因爲ole db源和目標任務實際上必須從表查詢中運行select *以獲取可供選擇的表的列表。由於密碼沒有保存,它會給你一個錯誤。

2)如果你有一個配置文件,你仍然會面臨類似的問題。但通過配置文件,您可以編輯並手動插入密碼。它爲我工作。 ole db源和目標任務未顯示任何紅叉。

相關問題