Home
Tour
Download
Purchase
Local Cube Information Center
Samples
Support
About Us
Contact

A Visual Basic procedure for creating a basic DTS Package

 

'The package is saved to SQL Server on the local machine

'The package is saved using the sa login with no password

'Change the parameters of the SaveToSQLServer method toward

'  the end of the procedure if these choices are inappropriate

 

'This package contains the following objects:

' 1. Two connections - both to the Pubs database on the local

'     SQL Server

' 2. Three steps

' 3. Two precedence constraints, so that the steps will occur

'     in order.

' 4. Three tasks - two ExecuteSQL tasks and one DataPumpTask:

'     The first ExecuteSQL task drops and creates the AuthorID table

'     The second ExecuteSQL task deletes all records from AuthorID

'     The DataPumpTask loads the AuthorID table from the au_id

'       field of the Authors table.

' 5. One source field and one destination field in the DataPumpTask's transformation

' 6. A simple ActiveX script in the transformation.

 

'HOW TO USE THIS CODE:

' 1. Create a Visual Basic project

' 2. Paste this code into a Form with the default name, Form1

' 3. Add a reference to the Microsoft DTSPackage Object Library

 

Option Explicit

 

Private Sub Form_Load()

On Error GoTo ProcErr

 

Dim pkg As New DTS.Package

Dim con As DTS.Connection

Dim stp As DTS.Step

Dim tsk As DTS.Task

Dim cusSQL As DTS.ExecuteSQLTask

Dim cusData As DTS.DataPumpTask

Dim oleprop As DTS.OleDBProperty

Dim prc As DTS.PrecedenceConstraint

Dim tran As DTS.Transformation

Dim props As DTS.Properties

Dim col As DTS.Column

Dim txt As String

 

'Set Package name - Must be unique on the Server

pkg.Name = InputBox("Unique name for new package -", "Package Name")

 

'Create connections for the package

Set con = pkg.Connections.New("SQLOLEDB.1")

con.Name = "Pubs #1"

con.ID = 1

con.DataSource = "(local)"

con.Catalog = "pubs"

con.UseTrustedConnection = True

con.ConnectionProperties("Integrated Security") = "SSPI"

con.ConnectionProperties("Persist Security Info") = True

con.ConnectionProperties("Initial Catalog") = "pubs"

con.ConnectionProperties("Data Source") = "(local)"

pkg.Connections.Add con

Set con = Nothing

 

Set con = pkg.Connections.New("SQLOLEDB.1")

con.Name = "Pubs #2"

con.ID = 2

con.DataSource = "(local)"

con.Catalog = "pubs"

con.UseTrustedConnection = True

con.ConnectionProperties("Integrated Security") = "SSPI"

con.ConnectionProperties("Persist Security Info") = True

con.ConnectionProperties("Initial Catalog") = "pubs"

con.ConnectionProperties("Data Source") = "(local)"

pkg.Connections.Add con

Set con = Nothing

 

'Create the steps

Set stp = pkg.Steps.New

stp.Name = "DTSStep_DTSExecuteSQLTask_1"

stp.Description = "Create AuthorID Table"

stp.TaskName = "DTSTask_DTSExecuteSQLTask_1"

pkg.Steps.Add stp

Set stp = Nothing

 

Set stp = pkg.Steps.New

stp.Name = "DTSStep_DTSExecuteSQLTask_2"

stp.Description = "Delete AuthorID Table"

stp.TaskName = "DTSTask_DTSExecuteSQLTask_2"

pkg.Steps.Add stp

Set stp = Nothing

 

Set stp = pkg.Steps.New

stp.Name = "DTSStep_DTSDataPumpTask_1"

stp.Description = "Load AuthorID Table"

stp.TaskName = "DTSTask_DTSDataPumpTask_1"

pkg.Steps.Add stp

Set stp = Nothing

 

'Create Precedence Constraints for the steps

Set stp = pkg.Steps("DTSStep_DTSExecuteSQLTask_2")

Set prc = stp.PrecedenceConstraints.New("DTSStep_DTSExecuteSQLTask_1")

prc.StepName = "DTSStep_DTSExecuteSQLTask_1"

prc.PrecedenceBasis = DTSStepPrecedenceBasis_ExecStatus

prc.Value = DTSStepExecStat_Completed

stp.PrecedenceConstraints.Add prc

Set prc = Nothing

 

Set stp = pkg.Steps("DTSStep_DTSDataPumpTask_1")

Set prc = stp.PrecedenceConstraints.New("DTSStep_DTSExecuteSQLTask_2")

prc.StepName = "DTSStep_DTSExecuteSQLTask_2"

prc.PrecedenceBasis = DTSStepPrecedenceBasis_ExecResult

prc.Value = DTSStepExecResult_Success

stp.PrecedenceConstraints.Add prc

Set prc = Nothing

 

'Create ExecuteSQL Tasks

Set tsk = pkg.Tasks.New("DTSExecuteSQLTask")

Set cusSQL = tsk.CustomTask

cusSQL.Name = "DTSTask_DTSExecuteSQLTask_1"

cusSQL.Description = "Create AuthorID Table"

cusSQL.SQLStatement = _

  "if exists(select * from sysobjects where name = 'AuthorID')" & vbCrLf _

  & "  drop table AuthorID " & vbCrLf _

  & "go" & vbCrLf & vbCrLf _

  & "create table AuthorID (AuthorID varchar(20) null)"

cusSQL.ConnectionID = 1

pkg.Tasks.Add tsk

Set cusSQL = Nothing

Set tsk = Nothing

 

Set tsk = pkg.Tasks.New("DTSExecuteSQLTask")

Set cusSQL = tsk.CustomTask

cusSQL.Name = "DTSTask_DTSExecuteSQLTask_2"

cusSQL.Description = "Delete Author Table"

cusSQL.SQLStatement = "delete AuthorID"

cusSQL.ConnectionID = 1

pkg.Tasks.Add tsk

Set cusSQL = Nothing

Set tsk = Nothing

 

'Create DataPump Task

Set tsk = pkg.Tasks.New("DTSDataPumpTask")

Set cusData = tsk.CustomTask

cusData.Name = "DTSTask_DTSDataPumpTask_1"

cusData.Description = "Load AuthorID Table"

cusData.SourceConnectionID = 1

cusData.SourceSQLStatement = "select au_id from authors"

cusData.DestinationConnectionID = 2

cusData.DestinationObjectName = "[pubs].[dbo].[AuthorID]"

 

  'Add transformations for DataPump task

  Set tran = cusData.Transformations.New("DTS.DataPumpTransformScript.1")

  tran.Name = "DTSTransformation__1"

 

    'Add Source columns for transformation

    Set col = tran.SourceColumns.New("au_id", 1)

    col.Name = "au_id"

    col.Ordinal = 1

    tran.SourceColumns.Add col

    Set col = Nothing

 

    'Add Destination columns for transformation

    Set col = tran.DestinationColumns.New("AuthorID", 1)

    col.Name = "AuthorID"

    col.Ordinal = 1

    tran.DestinationColumns.Add col

    Set col = Nothing

   

    'Create the ActiveX script

    txt = ""

    txt = txt & "'Simple transformation of one field" & vbCrLf

    txt = txt & "Option Explicit" & vbCrLf

    txt = txt & vbCrLf

    txt = txt & "Function Main" & vbCrLf

    txt = txt & "" & vbCrLf

    txt = txt & "  DTSDestination(""AuthorID"") = DTSSource(""au_id"") & vbCrLf"

    txt = txt & "" & vbCrLf

    txt = txt & "  Main = DTSTransformStat_OK" & vbCrLf

    txt = txt & "" & vbCrLf

    txt = txt & "End Function"

   

    'Set the TransformServerProperties

    Set props = tran.TransformServerProperties

    props("Language") = "VBScript"

    props("FunctionEntry") = "Main"

    props("Text") = txt

    Set props = Nothing

 

  cusData.Transformations.Add tran

  Set tran = Nothing

 

pkg.Tasks.Add tsk

Set cusData = Nothing

Set tsk = Nothing

 

'Save new package

pkg.SaveToSQLServer "(local)", "sa", ""

MsgBox pkg.Name & " created as local SQL Server DTS package."

 

Set pkg = Nothing

Unload Form1

 

ProcExit:

  Exit Sub

ProcErr:

  MsgBox Err.Number & " - " & Err.Description

End Sub

sdg    

Home