5

我有一个在我们的 MS SQL Server 2000 数据库服务器上运行的 DTS 包,并且需要一种方法让用户从他们自己的机器上执行它。(该包创建的文件然后由我的应用程序传输到客户端计算机。)我在应用程序中包含了“Microsoft DTSPackage 对象库”COM 引用,但在执行的第一步时仍然出现“无效的类字符串”错误包被执行。我还尝试注册 SQL Server 2000 光盘的 redist.txt 文件中指定的所有 DLL。任何想法或建议将不胜感激。DTS 包非常简单。它只是将数据从 SQL 数据库复制到 Visual FoxPro 表中。我的执行包的代码如下(大部分来自微软的知识库文章: http: //support.microsoft。)。

        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
4

2 回答 2

1

如果您在用户 PC 上安装完整的 SQL Enterprise Manager 客户端工具,作为测试,他们能否成功运行?也许你错过了一些要求。请记住,DTS 包本身将在用户的 PC 上本地执行,而不是在服务器上。

于 2010-03-15T18:00:40.170 回答
0

尝试使用 REGASM /CODEBASE 注册您的 DLL

于 2010-08-04T23:26:31.577 回答