read table rows data using Data.OleDb.OleDbDataReader in SSIS Script task
how to read table rows data using Data.OleDb.OleDbDataReader in SSIS Script task? The package contains only script task, the code seems like the below: Dim objOleDb As New Data.OleDb.OleDbConnection Dim objData As Data.OleDb.OleDbDataReader Dim objCommand As Data.OleDb.OleDbCommand objOleDb.ConnectionString = strOleDb objOleDb.Open() Dts.Events.FireInformation(900, "", Now & " " & "Connected to:" & objOleDb.DataSource, "", 0, True) objCommand = objOleDb.CreateCommand() objCommand.CommandText = objVars("User::OLEDB_Select").Value objData = objCommand.ExecuteReader() Dim myHtmlMessage As MailMessage Dim mySmtpClient As SmtpClient Dim strPageScript As String myHtmlMessage = New MailMessage("sender@address.com", _ "to@address.com", "subject", "body") mySmtpClient = New SmtpClient("smtp.com", 25) objData.Read() For i = 0 To UBound(objData) Select i Case 0 strBCC = objData.Item(i) Case Else strBCC = strBCC & ", " & objData.Item(i) End Select Next objData.Close() mySmtpClient.Credentials = CredentialCache.DefaultNetworkCredentials mySmtpClient.Send(myHtmlMessage)
July 3rd, 2011 10:42am

why you used Script task for this? you can simply use Execute SQL Task for querying data from any database. As I got from your code, you are querying database data, and send mail to every subscribers, you can fetch data from database with EXECUTE SQL TASK, and fill data in package variables, and then using SEND MAIL TASK or a SCRIPT TASK to send mail to the subscriber address in package variables. tell us what exactly you need to do and I can help you in detail to implement in SSIS way.http://www.rad.pasfu.com
Free Windows Admin Tool Kit Click here and download it now
July 3rd, 2011 12:44pm

Hi Reza, I would like send an HTML report (therefore the send mail task doesn't fit) to banch of addresses which should derieved from oracle db. I've tried doing it with Script task, but met some problems running over the table rows. see more details below (pay attention to the red lines): Public Sub Main() Dim objVars As Variables Dim objOleDb As New Data.OleDb.OleDbConnection Dim objData As Data.OleDb.OleDbDataReader Dim objCommand As Data.OleDb.OleDbCommand Dim dteStart As Date Dim dteStop As Date Dim strServer As String Dim strDB As String Dim strPass As String Dim strUser As String Dim strLogFile As String Dim strLogFileFull As String Dim blnLogDelete As Boolean Dim strEmailField As String Dim strBCC As String Dim strSenderDisplayName As String Dim intOleDb As Integer Dim strOleDb As String dteStart = Now Try Dts.VariableDispenser.LockForRead("User::ServerName") Dts.VariableDispenser.LockForRead("User::DataBase") Dts.VariableDispenser.LockForRead("User::OLEDB_ServerName") Dts.VariableDispenser.LockForRead("User::OLEDB_Provider") Dts.VariableDispenser.LockForRead("User::OLEDB_Select") Dts.VariableDispenser.LockForRead("User::OLEDB_User") Dts.VariableDispenser.LockForRead("User::OLEDB_Pass") Dts.VariableDispenser.LockForRead("User::Email_Field") strPass = objVars("User::OLEDB_Pass").Value strUser = objVars("User::OLEDB_User").Value strServer = objVars("User::ServerName").Value strDB = objVars("User::DataBase").Value strEmailField = objVars("User::Email_Field").Value strSenderDisplayName = objVars("User::Email_Field").Value strOleDb = "Data Source=" & objVars("User::OLEDB_ServerName").Value & ";User ID=" & strUser & ";Provider=" & objVars("User::OLEDB_Provider").Value & ";Persist Security Info=True" & ";Password=" & strPass & ";" objOleDb.ConnectionString = strOleDb objOleDb.Open() Dts.Events.FireInformation(900, "", Now & " " & "Connected to:" & objOleDb.DataSource, "", 0, True) objCommand = objOleDb.CreateCommand() objCommand.CommandText = objVars("User::OLEDB_Select").Value objData = objCommand.ExecuteReader() Dim myHtmlMessage As MailMessage Dim mySmtpClient As SmtpClient Dim strPageScript As String 'link to SSRS report - using a href: strPageScript = "<table> <tr><td>Hello, this is a test using the Auto-Emailed Report. Please replay after receive. </td></tr> <tr> <td> <a href='http://<ServerName>/sites/BBI/_layouts/ReportServer/RSViewerPage.aspx?rv:RelativeReportUrl=/sites/BBI/Reports/PRI%20Project/RS_LAK_MAIL.rdl&Source=http%3A%2F%2Fvm%2Dbisps01%2Fsites%2FBBI%2FReports%2FForms%2Fupdated%2Easpx%3FRootFolder%3D%252Fsites%252FBBI%252FReports%252FPRI%2520Project%26FolderCTID%3D0x012000C2185D740B44874981D6B9E86D0F2008%26TreeField%3DFolders%26TreeValue%3DPRI%2520Project&DefaultItemOpen=1' > Please click here to view your report</a></td></tr></table>" myHtmlMessage = New MailMessage("address@bbb.com", _ "address@ccc.com", "AutoEmailedReport Testing", strPageScript) mySmtpClient = New SmtpClient("smtp.com", 25) myHtmlMessage.IsBodyHtml = True objData.Read() 'read 1st table row value 'myHtmlMessage.Bcc.Add(objData.GetString(0)) For i = 0 To UBound(objData) Select Case i Case 0 strBCC = objData.GetValue(i) Case Else strBCC = strBCC & ", " & objData.GetValue(i) End Select Next objData.Close() myHtmlMessage.Bcc.Add(strBCC) mySmtpClient.Credentials = CredentialCache.DefaultNetworkCredentials mySmtpClient.Send(myHtmlMessage) Dts.TaskResult = ScriptResults.Success Catch ex As Exception dteStop = Now Dts.Events.FireInformation(900, "", Now & " " & "Duration:" & DateDiff(DateInterval.Minute, dteStart, dteStop).ToString, "", 0, True) Dts.Log("MAIN " & ex.Message, 999, Nothing) Dts.TaskResult = ScriptResults.Failure End Try End Sub End Class
July 3rd, 2011 3:42pm

do you get any error message? if yes, paste the exact error message here.http://www.rad.pasfu.com
Free Windows Admin Tool Kit Click here and download it now
July 3rd, 2011 6:08pm

Thanks alot, it is working. what i've missed was doing the following: Do While (objData.Read()) myHtmlMessage.Bcc.Add(objData.GetString(0)) Loop
July 4th, 2011 8:24am

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics