Wednesday, May 25, 2011

Run SSIS Package using Stored proceure through C# application

      create package with varrieble to accept the filename or filepath..then create stored procedure..

 CREATE PROCEDURE [dbo].[Sp_RunPackage_new]
(
    @filename varchar(1000)
    --@packagepath varchar(1000)
)
  
AS
BEGIN

    declare @packagepath varchar(250)
  
    SET @packagepath = 'D:\SSIS Workings\RunPackage\bin\csvTosql.dtsx'
  
    IF NULLIF(LTRIM(RTRIM(@filename)), '') IS NULL
    BEGIN
            RAISERROR('Invalid filename', 16 , 1)
    END
    IF NULLIF(LTRIM(RTRIM(@packagepath)), '') IS NULL
    BEGIN
        RAISERROR('Invalid package filename', 16 , 1)
    END

    DECLARE @dtsExecCmd VARCHAR(4000)

        SET @dtsExecCmd = 'dtexec /F "' + ltrim(rtrim(@packagepath)) + '"'
        SET @dtsExecCmd = @dtsExecCmd + ' /De "test"'
        SET @dtsExecCmd = @dtsExecCmd + ' /SET "\package.Variables[User::InputFileName].Properties[Value]";"' + @filename +'"'
      
    DECLARE @result INT
  
    EXEC @result = master..xp_cmdshell @dtsExecCmd
  
END


Create a form with a single button click just call the stored procedure..

button_ClickEvent
{
            string fileName;
            OpenFileDialog opnFileDlg = new OpenFileDialog();
            opnFileDlg.DefaultExt = ".csv";
            opnFileDlg.Filter = "CSV documents (.csv)|*.csv";
            Nullable<bool> result = opnFileDlg.ShowDialog();
            if (result == true && result != null)
            {
                // Open document
                fileName = opnFileDlg.FileName;
                using (SqlConnection con = new SqlConnection(@"Data Source=ILINKSYS-183\SQLSERVER2008R2;User Id=sa;Password=!QAZ1qaz;Initial Catalog=TestSSIS"))
                {
                    try
                    {
                        con.Open();
                        SqlCommand cmd = new SqlCommand("Sp_RunPackage_new", con);
                        SqlParameter par = new SqlParameter("@InputFileNameServer", fileName);
                        cmd.CommandType = System.Data.CommandType.StoredProcedure;
                        cmd.Parameters.Add(par);
                        cmd.ExecuteNonQuery();

                        con.Close();
                    }
                    catch
                    {
                        throw;
                    }
                }
                MessageBox.Show(fileName+" Executed Successfully");
            }
        }
}

No comments:

Post a Comment