Выполнение задачи SSIS из приложения C # - PullRequest
0 голосов
/ 12 января 2012

Я могу успешно запустить пакет служб SSIS из моего приложения C #. Есть ли способ запустить определенную задачу в пакете служб SSIS из приложения .NET (C #)?

Ответы [ 3 ]

2 голосов
/ 14 января 2012

Я думаю, что вы можете открыть свой пакет с помощью API, отключить все другие задачи и затем запустить весь пакет

2 голосов
/ 12 января 2012

Несколько лет назад мы сделали что-то подобное с приложением ASP.NET Web Forms, создав в основном задание агента SQL с помощью всего одного шага, который выполнил пакет SSIS, развернутый на сервере, и затем вызвал его через Enterprise Библиотека

    public bool ExecutePackage(string jobName)
    {
        int result = -1;
        bool success = false;

        try
        {
            // "SsisConnectionString" will be the name of your DB connection string in your config
            Database db = DatabaseFactory.CreateDatabase("SsisConnectionString");  
            using (DbCommand dbCommand = db.GetStoredProcCommand("sp_start_job"))
            {
                db.DiscoverParameters(dbCommand);
                db.SetParameterValue(dbCommand, "job_name", jobName);
                db.SetParameterValue(dbCommand, "job_id", null);
                db.SetParameterValue(dbCommand, "server_name", null);
                db.SetParameterValue(dbCommand, "step_name", null);
                db.ExecuteNonQuery(dbCommand);
                result = Convert.ToInt32(db.GetParameterValue(dbCommand, "RETURN_VALUE"));
            }
        }
        catch (Exception exception)
        {
            success = false;
        }

        switch (result)
        {
            case 0:
                success = true;
                break;
            default:
                success = false;
                break;
        }

        return success;
    }

И в вашем конфиге:

<connectionStrings>
    <add name="SsisConnectionString"
         connectionString="Data Source=<server>;Initial Catalog=MSDB;User Id=<user>;Password=<pwd>;"
         providerName="System.Data.SqlClient"/>
</connectionStrings>
0 голосов
/ 12 января 2012

Я нашел способ получить доступ к Задачам Пакета и установить для него свойства.

var task = (TaskHost)package.Executables["Your Package Name"];

task.Properties["Any Property"].SetValue(task, "Property Value");

В любом случае, спасибо всем за ввод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...