簡體   English   中英

SSIS自動執行程序包

[英]SSIS automatic package execution

我想每周一次在指定時間自動執行我的SSIS程序包。 我想在每周加載新的Excel文件的內容之前清除整個數據庫。 我想我可以使用truncate語句來清除整個數據庫。 但是,如何從不知道提前名稱的文件中讀取?

我的直覺告訴我,我需要了解以下內容:

How do I prompt the user for a file name in SSIS? 
Am I using VB or C# to do this prompting?

謝謝!

您想要多長時間的答案? ;)

如何從我不知道提前名稱的文件中讀取?

您在這方面有很多選擇。 我列出他們是為了

  1. 我的“轉到”將是Foreach枚舉器,並使用文件類型來處理標准文件夾中的可用文件。 這將您的問題減少為培訓問題(用戶,將文件拖放到\\ server \\ share \\ inbound)

  2. 假設您在文件的Connection Manager ConnectionString屬性上具有一個Expression,則可以提供此值的運行時替代。 因此,名為InputFile SSIS變量的值為\\\\server\\share\\inbound\\source_2012-07-17.txt一個名為Source的連接管理器,並且ConnectionString屬性上的表達式映射為@ [User :: InputFile]程序包運行,只要InputFile的值正確,則您的程序包將使用正確的源文件,一切都很好。 不必創建一個變量,並使用expressiosn要做到這一點,你可以直接做到對連接管理器的屬性,但是從你會更好地解決問題維護和故障排除的觀點。 運行軟件包時,您將需要使用命令行選項為要配置的事物提供一個明確的值。 大約dtexec /file C:\\mypackage.dtsx /set \\Package.Variables[User::InputFile].Properties[Value];"\\\\server\\share\\inbound\\source_2012-07-18.txt"使用dtexecui構建此字符串正確輸出。

  3. 如果用戶實際上正在運行程序包(雙擊,執行),則它處於交互模式下運行@[System::InteractiveMode] = True沒有什么可以阻止您在腳本任務中編寫完整的Windows窗體應用程序作為包裝的第一步。 就是說, 不會用UI代碼來誇大ETL包,但是可以做到。 這實際上取決於您要完成的工作。

  4. 將該UI代碼移到專用程序包中。 組裝用戶輸入后,通過父/子配置將其傳遞給子包。

  5. 這實際上只是2 + 3ish。 做一件好事,並使您的程序包基於命令行覆蓋運行。 這樣,它就可以在交互模式下工作,並且可以在服務器(SQL Agent)上執行。 然后,使用您希望使用的任何技術創建用於獲取和驗證用戶輸入的界面,然后使用這些值調用您的程序包。 您可以跳過調用DTEXEC的操作,而直接使用對象模型。

  6. 這確實應該是十億美元的選擇。 輸入文件被命名為\\\\server\\share\\input\\source_file.txt帶有鐵腕的規則,並使您的用戶符合您的意願。 如果有權力,請允許用戶使用他們希望的任何文件名,只要它是您告訴他們使用的文件名即可。 否則,將導致其數據無法加載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM