Hello All,
Please help.
I am loading data from sql stored procedure with two results sets into a flat file destination in SSIS script taSK.
My code below is not wrting data to flat fiile. Please help.
using System;using System.IO;
using System.Data;
using System.Data.SqlClient;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
#endregion
namespace ST_bc581c6792504a7588c6fc043fde1631
{
/// <summary>
/// ScriptMain is the entry point class of the script. Do not change the name, attributes,
/// or parent of this class.
/// </summary>
[Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
#region Help: Using Integration Services variables and parameters in a script
/* To use a variable in this script, first ensure that the variable has been added to
* either the list contained in the ReadOnlyVariables property or the list contained in
* the ReadWriteVariables property of this script task, according to whether or not your
* code needs to write to the variable. To add the variable, save this script, close this instance of
* Visual Studio, and update the ReadOnlyVariables and
* ReadWriteVariables properties in the Script Transformation Editor window.
* To use a parameter in this script, follow the same steps. Parameters are always read-only.
*
* Example of reading from a variable:
* DateTime startTime = (DateTime) Dts.Variables["System::StartTime"].Value;
*
* Example of writing to a variable:
* Dts.Variables["User::myStringVariable"].Value = "new value";
*
* Example of reading from a package parameter:
* int batchId = (int) Dts.Variables["$Package::batchId"].Value;
*
* Example of reading from a project parameter:
* int batchId = (int) Dts.Variables["$Project::batchId"].Value;
*
* Example of reading from a sensitive project parameter:
* int batchId = (int) Dts.Variables["$Project::batchId"].GetSensitiveValue();
* */
string fpath;
string fname;
string prname;
//int row = 0;
int counter = 0;
//int fieldcount;
//int header = 0;
DateTime startDate;
DateTime endDate;
SqlParameter param1 = new SqlParameter();
SqlParameter param2 = new SqlParameter();
#endregion
#region Help: Firing Integration Services events from a script
/* This script task can fire events for logging purposes.
*
* Example of firing an error event:
* Dts.Events.FireError(18, "Process Values", "Bad value", "", 0);
*
* Example of firing an information event:
* Dts.Events.FireInformation(3, "Process Values", "Processing has started", "", 0, ref fireAgain)
*
* Example of firing a warning event:
* Dts.Events.FireWarning(14, "Process Values", "No values received for input", "", 0);
* */
#endregion
#region Help: Using Integration Services connection managers in a script
/* Some types of connection managers can be used in this script task. See the topic
* "Working with Connection Managers Programatically" for details.
*
* Example of using an ADO.Net connection manager:
* object rawConnection = Dts.Connections["Sales DB"].AcquireConnection(Dts.Transaction);
* SqlConnection myADONETConnection = (SqlConnection)rawConnection;
* //Use the connection in some code here, then release the connection
* Dts.Connections["Sales DB"].ReleaseConnection(rawConnection);
*
* Example of using a File connection manager
* object rawConnection = Dts.Connections["Prices.zip"].AcquireConnection(Dts.Transaction);
* string filePath = (string)rawConnection;
* //Use the connection in some code here, then release the connection
* Dts.Connections["Prices.zip"].ReleaseConnection(rawConnection);
* */
#endregion
/// <summary>
/// This method is called when this script task executes in the control flow.
/// Before returning from this method, set the value of Dts.TaskResult to indicate success or failure.
/// To open Help, press F1.
/// </summary>
public void Main()
{
// Read SSIS variables to local variable.
startDate = (DateTime)Dts.Variables["User::str_StartDate"].Value;
endDate = (DateTime)Dts.Variables["User::str_EndDate"].Value;
fpath = (string)Dts.Variables["User::str_Fpath"].Value;
fname = (string)Dts.Variables["User::str_Fname"].Value;
prname = (string)Dts.Variables["User::str_Pname"].Value;
// create dest ff connection
string FFConn;
FFConn = (string)(Dts.Connections["FF_DST_Details"].AcquireConnection(Dts.Transaction) as String);
StreamWriter sw = new StreamWriter(FFConn);
//MessageBox.Show(FFConn, "FF_DST_Details");
// create source db connection
SqlConnection DBConn = new SqlConnection();
DBConn = (SqlConnection)(Dts.Connections["ADO_NET_ReportingOLTP"].AcquireConnection(Dts.Transaction)
as SqlConnection);
SqlDataReader sqlreader = null;
//MessageBox.Show(DBConn.ConnectionString, "FF_DST_Details");
//DBConn.Open();
SqlCommand cmd = new SqlCommand(prname, DBConn);
cmd.CommandTimeout = 300;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = prname;
//MessageBox.Show(cmd.CommandText, "Stored Procedure About to execute...");
param1.ParameterName = "StartDate";
param1.Value = (DateTime)Dts.Variables["User::str_StartDate"].Value;
cmd.Parameters.Add(param1);
//MessageBox.Show(param1.ParameterName, "Parameter1 About to execute...");
param2.ParameterName = "EndDate";
param2.Value = (DateTime)Dts.Variables["User::str_EndDate"].Value;
cmd.Parameters.Add(param2);
//MessageBox.Show(param2.ParameterName, "Parameter2 About to execute...");
//MessageBox.Show(cmd.CommandText, "About to execute...");
sqlreader = cmd.ExecuteReader();
//MessageBox.Show(sqlreader.FieldCount.ToString(), "Column Count");
// log
Dts.Events.FireInformation(0, "Info: ", "Begin process!", string.Empty,
if (sqlreader.HasRows)
{
while (sqlreader.Read())
{
counter = sqlreader.RecordsAffected;
sw.WriteLine(sqlreader[0]);
}
sqlreader.NextResult();
}
if (sqlreader!= null)
{
sqlreader.Close();
}
// Close the connection
if (DBConn != null)
{
DBConn.Close();
}
Dts.TaskResult = (int)ScriptResults.Success;
// sqlreader.Close();
//DBConn.Close();
sw.Close();
}
#region ScriptResults declaration
/// <summary>
/// This enum provides a convenient shorthand within the scope of this class for setting the
/// result of the script.
///
/// This code was generated automatically.
/// </summary>
enum ScriptResults
{
Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
};
#endregion
}
}