Как запустить пакет служб SSIS из Visual Basic 6? - PullRequest
0 голосов
/ 06 марта 2009

Может ли кто-нибудь предоставить информацию о том, как запустить пакет служб интеграции на экземпляре SQL Server 2005 из Visual Basic 6?

Любая помощь очень ценится.

Ответы [ 3 ]

2 голосов
/ 02 ноября 2009

Вам нужно включить xp_cmdshell, если это не так, выполните: sp_configure 'xp_cmdshell', '1' в SSMS на вашем сервере.

Создайте процедуру хранения и вставьте в нее следующий код:

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

Затем вызовите хранимую процедуру из VB6 через ADODB.Command.

У вас есть примеры здесь:

Надеюсь, это поможет.

1 голос
/ 10 января 2019

Исходя из ответа Дана С., у меня сработало:

Создать хранимую процедуру, которая вызывает пакет:

  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
    

Мне нужно было добавить ссылку на «Microsoft ActiveX Data Objects 2.5 Library» в мой код VBA.

Я знаю, что это ответ на старый вопрос, но, надеюсь, мой ответ объединяет все в одном месте.

0 голосов
/ 06 марта 2009

Вероятно, проще всего это раскошелиться и запустить dtexec

В качестве альтернативы, вы могли бы использовать используемые сборки Microsoft.SqlServer.Dts в .NET и обернуть его в COM (или EXE), а затем вызвать его из VB6.

У этой второй ссылки есть некоторые другие параметры, которые могут каким-то образом применяться к VB6, но, вероятно, все они приведут к переносу кода .NET в COM-объект или в EXE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...