«Недопустимая строка класса» при попытке выполнить пакет DTS в VB .NET - PullRequest
5 голосов
/ 10 марта 2010

У меня есть пакет 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

Ответы [ 2 ]

1 голос
/ 15 марта 2010

Если вы установите полнофункциональные клиентские инструменты SQL Enterprise Manager на ПК пользователей, в качестве теста, смогут ли они успешно его запустить? Может быть, вы пропустили какое-то требование. Помните, что сам пакет DTS будет выполняться локально на ПК пользователя, а не на сервере.

0 голосов
/ 05 августа 2010

Попробуйте зарегистрировать свою DLL с помощью REGASM / CODEBASE

...