任何人都可以提供有关如何在SQL Server 2005实例上从Visual Basic 6运行集成服务包的一些信息吗?
非常感谢任何帮助。
答案 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的回答,对我有用的是:
创建一个调用程序包的存储过程:
添加到所生成脚本的顶部:
CREATE PROCEDURE sp_NewProcedureName
AS
BEGIN
并添加到生成的脚本的底部:
END
GO
执行此脚本以创建存储过程。
然后使用代码来调用存储过程
此代码对我有用:
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中。