DTS пакет, запуск программно С#
От: magjam  
Дата: 27.09.05 04:18
Оценка:
Как выполнить уже имеющийся в MSSQL DTS-пакет.
Хотелось бы пример кода или ссылку на него.
Спасибо.
Re: DTS пакет, запуск программно С#
От: Wiz-ars Россия  
Дата: 27.09.05 05:32
Оценка:
Здравствуйте, magjam, Вы писали:

M>Как выполнить уже имеющийся в MSSQL DTS-пакет.

M>Хотелось бы пример кода или ссылку на него.
M>Спасибо.

Я делал так (сам в свое время где-то подсмотрел):

1. Подцеплял к проекту библиотеку dtspkg.dll.
2. Этот класс нужен для приема событий, возникающих при исполнении пакета.

class PackageEventsSink : DTS.PackageEvents
{

    public void OnQueryCancel(string EventSource, ref bool pbCancel)
    {
        Console.WriteLine("OnQueryCancel({0})", EventSource);
        pbCancel = false;
    }

    public void OnStart(string EventSource)
    {
        Console.WriteLine("OnStart({0})", EventSource);
    }

    public void OnProgress(string EventSource, string ProgressDescription, int PercentComplete, int ProgressCountLow, int ProgressCountHigh)
    {
        Console.WriteLine("OnProgress({0}, {1}, {2}, {3}, {4})", EventSource, ProgressDescription,
        PercentComplete, ProgressCountLow, ProgressCountHigh);
    }

    public void OnError(string EventSource, int ErrorCode, string Source, string Description, string HelpFile, int HelpContext, string
        IDofInterfaceWithError, ref bool pbCancel)
    {
        Console.WriteLine("OnError({0}, {1}, {2}, {3}, {4}, {5})", EventSource, ErrorCode, Source, Description, HelpFile, HelpContext);
        pbCancel = false;
    }

    public void OnFinish(string EventSource)
    {
        Console.WriteLine("OnFinish({0})", EventSource);
    }
}



3. Действия с пакетом осуществляются через ConnectionPoints:

Package2Class package  = new Package2Class();
UCOMIConnectionPointContainer CnnctPtCont = (UCOMIConnectionPointContainer)package;
UCOMIConnectionPoint CnnctPt;
PackageEventsSink  PES = new PackageEventsSink();
Guid guid = new Guid("10020605-EB1C-11CF-AE6E-00AA004A34D5");  // UUID of PackageEvents Interface
CnnctPtCont.FindConnectionPoint(ref guid, out CnnctPt);
int iCookie;
CnnctPt.Advise(PES, out iCookie);
object pVarPersistStgOfHost = null;

package.LoadFromSQLServer("(local)", // Имя SQL сервера
    null, null, DTSSQLServerStorageFlags.DTSSQLStgFlag_UseTrustedConnection, null, null, null, 
    "Test2", // Имя DTS пакета
    ref pVarPersistStgOfHost);

package.Execute();
package.UnInitialize();
package = null;
CnnctPt.Unadvise(iCookie);
Re[2]: DTS пакет, запуск программно С#
От: Аноним  
Дата: 27.09.05 06:51
Оценка:
Спасибо, попробую.
Есть такой Microsoft OLE DB Provider for DTS Packages.
Можно ли его как нибудь использовать?
Re[3]: DTS пакет, запуск программно С#
От: Wiz-ars Россия  
Дата: 27.09.05 09:21
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Спасибо, попробую.

А>Есть такой Microsoft OLE DB Provider for DTS Packages.
А>Можно ли его как нибудь использовать?

Не использовал. Хотя, судя по названию, может и можно. Но когда я разбирался в вопросе — о нем никаких ссылок/пояснений не нашел. А В MDSN по поводу этого провайдера маловато информации.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.