ReportSerializer
allows you to the convert report to a C# object model. So, you can convert your report to Report Designer and modify the data source connection with data sources.
public void OnInitReportOptions(ReportViewerOptions reportOption)
{
FileStream inputStream = new FileStream(@"C:\Users\Resources\sales-order-detail.rdl", FileMode.Open, FileAccess.Read);
BoldReports.RDL.DOM.ReportSerializer serializer = new BoldReports.RDL.DOM.ReportSerializer();
BoldReports.RDL.DOM.ReportDefinition reportDefinition = serializer.GetReportDefinition(inputStream);
string connectionString = "Data Source =<instancename> ; Initial Catalog = <database>; User ID = '<username>'; Password = '<password>'";
foreach (var source in reportDefinition.DataSources)
{
source.ConnectionProperties.ConnectString = connectionString;
}
MemoryStream reportStream = new MemoryStream();
serializer.SaveReportDefinition(reportStream , reportDefinition);
reportStream.Position = 0;
reportOption.ReportModel.Stream = reportStream;
}