如何从Visual Basic 6运行SSIS包?

时间:2009-03-06 15:44:59

标签: sql-server vb6 ssis

任何人都可以提供有关如何在SQL Server 2005实例上从Visual Basic 6运行集成服务包的一些信息吗?

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:2)

您需要启用xp_cmdshell,如果不是,请在服务器上的SSMS中执行:sp_configure 'xp_cmdshell', '1'

创建商店程序,并在其中加入以下代码:

DECLARE @SSISPackage VARCHAR(1000)
DECLARE @cmd VARCHAR(max)
DECLARE @variable_value1 varchar(255)
DECLARE @Result int

SET @SSISPackage = 'C:\path_to_the_package\package_name.dtsx'
SET @cmd = 'dtexec /F "' + @SSISPackage + '"'   
// if you have variables in the package that need to be set up
// add them here
SET @cmd = @cmd + ' /SET \Package.Variables[User::somevariable1].Properties[Value];"' + @variable_value1 + '"'
SET @cmd = @cmd + ' /SET \Package.Variables[User::somevariable2].Properties[Value];"' + @variable_value2 + '"'
SET @cmd = @cmd + ' /SET \Package.Variables[User::somevariable3].Properties[Value];"' + @variable_value3 + '"'

EXECUTE @Result = master..xp_cmdshell @cmd, NO_OUTPUT

然后,通过ADODB.Command从VB6调用存储过程。

你有这里的例子:

我希望它有所帮助。

答案 1 :(得分:1)

根据Dan S的回答,对我有用的是:

创建一个调用程序包的存储过程:

  1. 右键单击您的SSIS包,然后选择“执行”。
  2. 在“执行程序包”窗口中,单击“脚本”按钮。
  3. 添加到所生成脚本的顶部:

    CREATE PROCEDURE sp_NewProcedureName
    AS
    BEGIN
    
  4. 并添加到生成的脚本的底部:

    END
    GO
    
  5. 执行此脚本以创建存储过程。

然后使用代码来调用存储过程

  1. 此代码对我有用:

    Set adodbConn = New ADODB.Connection
    adodbConn.Open "Provider=sqloledb; Data Source=yourSQLServer; Initial Catalog=yourDB; Integrated Security=SSPI;"
    Set adodbCMD = New ADODB.Command
    With adodbCMD
        .ActiveConnection = adodbConn
        .CommandText = "dbo.sp_NewProcedureName"
        .CommandType = adCmdStoredProc
        .CommandTimeout = 0
        .Execute
    End With
    Set adodbCMD = Nothing
    adodbConn.Close
    Set adodbConn = Nothing
    

我需要在VBA代码中添加对“ Microsoft ActiveX数据对象2.5库”的引用。

我知道这是一个老问题的答案,但希望我的答案将所有内容集中在一个地方。

答案 2 :(得分:0)

可能最简单的是炮轰和run dtexec

或者,您可以在.NET中use the using Microsoft.SqlServer.Dts assemblies并将其包装在COM(或EXE)中,然后从VB6调用它。

第二个链接有一些其他选项可能以某种方式应用于VB6,但可能都会导致将.NET代码包装在COM对象或EXE中。

相关问题