У меня есть пакет DTS, который работает на нашем сервере баз данных MS SQL Server 2000, и мне нужен способ, чтобы пользователи могли запускать его со своих компьютеров. (Пакет создает файлы, которые затем переносятся моим приложением на клиентский компьютер.) Я включил в приложение ссылку на «Библиотеку объектов Microsoft DTSPackage», но все же получаю ошибку «Недопустимая строка класса», когда на первом этапе пакет выполнен. Я также попытался зарегистрировать все библиотеки DLL, указанные в файле redist.txt на диске SQL Server 2000. Любые мысли или предложения будут с благодарностью. Пакет DTS очень прост. Он просто копирует данные из базы данных SQL в таблицы Visual FoxPro. Мой код, выполняющий пакет, приведен ниже (большая часть его взята из статьи Microsoft по КБ: http://support.microsoft.com/kb/321525).
Dim pkg As DTS.Package
pkg = New DTS.Package
Dim cpContainer As System.Runtime.InteropServices.ComTypes.IConnectionPointContainer
cpContainer = CType(pkg, System.Runtime.InteropServices.ComTypes.IConnectionPointContainer)
Dim cpPoint As System.Runtime.InteropServices.ComTypes.IConnectionPoint
Dim PES As PackageEventsSink = New PackageEventsSink
Dim guid As Guid = New Guid("10020605-EB1C-11CF-AE6E-00AA004A34D5")
cpPoint = Nothing
cpContainer.FindConnectionPoint(guid, cpPoint)
Dim intCookie As Integer
cpPoint.Advise(PES, intCookie)
pkg.LoadFromSQLServer(DTS_SERVER_NAME, , , DTSSQLServerStorageFlags.DTSSQLStgFlag_UseTrustedConnection, dtsPassword, , , dtsName, Nothing)
If pkg Is Nothing Then Throw New ApplicationException("The DTS Package could not be loaded from the SQL Server.")
Dim pkgStep As DTS.Step
For Each pkgStep In pkg.Steps
pkgStep.Execute()
Next
pkg.UnInitialize()
pkg = Nothing
cpPoint.Unadvise(intCookie)
cpPoint = Nothing
cpContainer = Nothing
PES = Nothing