• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1701
  • Last Modified:

What is the SSIS equivilent of DTS.Package?

What is the SSIS equivilent of object DTS.Package?  My goal is to execute (from within a vbscript) an SSIS package.  In the "old" days, the code  
    Set Package = CreateObject("DTS.Package")
     Package.LoadFromSQLServer "(local)\adapt",,,256,,,,"MyPackage"
     Package.Execute()
would do just that.  How do I do this in the new SSIS world?

I have tried running dtexec in wscript.shell.  I tested my command in cmd.exe, it works when executed nativly.  But it will not work in wscript.shell.  Any tips here?

My command is:

     dtexec /sql MyPackage

My package has been stored in SQL Server.
0
jflanner
Asked:
jflanner
  • 9
  • 3
  • 3
1 Solution
 
SLaneDellCommented:
Hi jf,

You cany execute the package remotely, you have to do it on the same box as sql server due to licence issues, you can execute the package locally from the command prompt using: "dtexec package", but i dont think thats what your after, if you want to execute if from vb code you can call a stored proceedure from your app, that in turn executes the package. What you need to do is call this stored proceedure from your vb code :


CREATE PROCEDURE ProcedureName
AS
BEGIN
xp_cmdshell dtexec package
END

make sure that 'dtexec' is in you path or else use its full path also make sure you use the full path for your 'package'

some more info here:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=534156&SiteID=1
0
 
rboyd56Commented:
This appears to be the new object for SSIS:

set app = createObject("MSDTS.Application")

I found  this here:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=312844&SiteId=1
0
 
SLaneDellCommented:
Hi rboyd56,

These objects are only callable from vb.Net managed code within SSIS packages, the SQL Server 2005 licence does not allow them to be called externaly

Steve
0
Get free NFR key for Veeam Availability Suite 9.5

Veeam is happy to provide a free NFR license (1 year, 2 sockets) to all certified IT Pros. The license allows for the non-production use of Veeam Availability Suite v9.5 in your home lab, without any feature limitations. It works for both VMware and Hyper-V environments

 
rboyd56Commented:
The link that I sent dealt with calling SSIS packages from VB Script and that is the object that this user used. He had other problems so may be they were related to what you indicated.
0
 
SLaneDellCommented:
jf,

If you are still sure you want to run the package from code you can use the following vb.Net managed code, you will have to add this reference to your project "Microsoft.SqlServer.ManagedDTS.DLL" default location"C:\Program Files\Microsoft SQL Server\90\SDK\Assemblies" :

Dim app As New Application

Dim pkg As New Package

Dim pkgResults As DTSExecResult

pkgLocation = "C:\\Program Files\\Microsoft SQL Server\90\Samples\\Integration Services\\Package Samples\\CalculatedColumns Sample\\CalculatedColumns\\CalculatedColumns.dtsx"

pkg = app.LoadPackage(pkgLocation, Nothing, True)

pkgResults = pkg.Execute()

Rgds

Steve


0
 
SLaneDellCommented:
Be warned about any licencing implications thou !!, with the first method you will not need an sql server licence on the client machine
0
 
rboyd56Commented:
Thanks for the advice, but I am not doing this. I was just referencing a post I found.
0
 
jflannerAuthor Commented:
O.K. folks.  Thanks for the input.  I'm almost there.

I am not concerned with licencing because the script runs on the SQL box.  It is coordinating a number of activities (some database related, some not).

I can create an MSDTS.Application where I used to create a DTS package.  The next line (which I have not altered from DTS days:

Package.LoadFromSQLServer "(local)\adapt",,,256,,,,"MyPackage"

fails due to wring number of parameters.  It seems the template of method LoadFromSQLServer has chenged, which is reasonable.  I went looking for doc on MSDTS.Application and I am having little luck.

Half the points go to the person who can walk me from creation of the Package handle (loaded from SQL server, not a saved .dtsx file) through the execution of that package.  I need thew SSIS equivilant of all three SQL 2000 DTS lines in the original post.


0
 
SLaneDellCommented:
Hi Jf,
This is the prototype for the ssis LoadFromSQLServer method:

 LoadFromSqlServer ( _
      packagePath As String, _
      serverName As String, _
      serverUserName As String, _
      serverPassword As String, _
      events As IDTSEvents _
)

Here is an example of how you can use it:

Dim pkgResults As DTSExecResult
Dim app As New Application
 Dim pkg As Package = New Package()

 pkg = app.LoadFromSqlServer("\\PackageName", "yourserver", Nothing, Nothing, Nothing)

pkgResults = pkg.Execute()

Hope this helps,

Steve
0
 
SLaneDellCommented:
Hi JF,

Just wondering how you got on with this, did it work for you ?

Steve
0
 
jflannerAuthor Commented:
Hey Steve:

I got distracted and had to table this for a few days.  I'm getting a bit closer with your help and article   http://msdn2.microsoft.com/en-us/library/ms136090.aspx.  The complicating factor is I am maintaining VBScript, not VB .net.  (This is a large script.  I would hate to have to reengineer the entire thing.)

Any way - where I am at I have:

     Set Application = CreateObject("MSDTS.Application")
     Set Package = Application.LoadFromSqlServer("\\package","(local)\instance", Nothing,  
                                       Nothing,  Nothing)
     Package.Execute()

This dies with error:

Microsoft VBScript runtime error: Type mismatch: 'Application.LoadFromSqlServer'

Any other ideas????
0
 
SLaneDellCommented:
Hi Jf,

I think you might be in trouble with the VBScript, what is your development envoirnment ? are you using windows script host or asp pages ?, I don think that the SSIS objecs are callable from vbscrit as they are .Net onbects and im pretty sure they are not backward compatile. As an alternative you can use "dtexec package.dtsx" in a batch file, then call the batch file from your script. This will get you out of trouble for the mean time. You could also create a Vb.Net executable (like above) for your new SSIS packages and similarly call from your vb script. This will  allow you to gradually re-engineer your process which i believe you would benifet from doing.

Steve
0
 
SLaneDellCommented:
Hey Jf,

Just got a reference to show you that vbscript is incompatible with SSIS .Net objects :
http://msdn2.microsoft.com/en-us/library/ms403344.aspx, but you can still use either of the methods that i have suggested above,

Steve
0
 
SLaneDellCommented:
Hi JF,

Does this help, i think we have exausted most possibilities here,

Steve
0
 
jflannerAuthor Commented:
Hey Steve:

I agree with you.  Form the Books Online you reference in the last post -

     Note:  
     The Integration Services application programming interfaces are incompatible with COM-based
     scripting languages such as VBScript.

is pretty damming.  I have developed a bat file - and call the bat file from a script as a tacticle measure.  That works - but I will not put it in production.  I will be converting the script to C# before it goes live.

Thanks for the help.
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 9
  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now