Все эти компоненты легко объяснены в Google. На самом деле, я сейчас иду через Google, чтобы освежить свою память и написать этот наполовину испеченный ответ.
Пожалуйста, пройдите это, отладьте мой код и опубликуйте правильный код, когда он заработает. Это вряд ли сработает с первой попытки, и вам нужно будет отладить, но вы узнаете больше, если действительно отладите его.
Вкладка «Сценарий»:
Язык как Microsoft Visual C # 2017 (отключен)
Я предлагаю вам использовать C #, а не VB, так как есть другие примеры онлайн для C #. Так что оставь как есть
Точка входа: Главная (это правильно?)
Это просто обозначает имя функции, которая будет автоматически вызываться в рамках задачи скрипта ... которая в шаблоне равна Main
, поэтому оставьте как есть
ReadOnlyVariables: (Что я должен установить?)
Это переменные, которые ваша задача скрипта должна прочитать (но не записать обратно). Так что это должно иметь User::Filename
в нем. Используйте пользовательский интерфейс, чтобы заполнить его.
ReadWriteVariables: (Что я должен установить?)
Это переменные, которые ваша задача скрипта должна прочитать и записать обратно. Так что в нем должно быть что-то вроде User::FileCreatedDateTime,User::FileSize
. Используйте пользовательский интерфейс, чтобы заполнить его.
Теперь, когда вы нажмете кнопку Edit Script..
, вы получите шаблонный скрипт.
Примечание
- В нем уже есть метод Main
- В комментариях содержатся подробные инструкции о том, как читать и записывать переменные
(это адаптировано отсюда и, вероятно, не работает без отладки http://www.techbrothersit.com/2011/02/ssis-load-files-information-to-sql.html)
Откройте область пространств имен и добавьте System.IO:
.
#region Namespaces
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using System.IO;
#endregion
Перейдите к основному методу внизу и отредактируйте его:
public void main()
{
// Get the file path from the SSIS variable
string FilePath = Dts.Variables["User::Filename"].Value.ToString();
// Use the FileInfo method from System.IO to get the file object
FileInfo file = new FileInfo(FilePath);
// Save file properties back to SSIS variables
Dts.Variables["User::FileCreatedDateTime"].Value = file.CreationTime;
Dts.Variables["User::FileSize"].Value = file.Length;
// Return success
Dts.TaskResult = (int)ScriptResults.Success;
}
Я отмечаю, что этот код очень похож на вторую ссылку, которую вы опубликовали - если у вас возникли проблемы с примером кода, вам нужно объяснить, почему (то есть конкретное сообщение об ошибке)
Вы могли бы также иметь трещину в этом пользовательском компоненте https://archive.codeplex.com/?p=filepropertiestask, но я настоятельно рекомендую никогда не использовать пользовательские компоненты в ваших пакетах служб SSIS, поскольку они, как правило, доставляют массу хлопот.