以编程方式将SSRS数据源另存为.ds文件

时间:2014-06-24 08:31:39

标签: c# reporting-services xml-serialization

我有一个SSRS服务器的Web服务,我从中下载并使用C#将报告序列化为XML,然后保存为.rdl个文件。

我有可能获得所有Data Source以及

ReportingService2005 rs = new ReportingService2005();
DataSource dataSource = new DataSource();
DataSourceDefinition dataSourceDefinition = rs.GetDataSourceContents(path);
dataSource.Item = dataSourceDefinition;

我想将data source个对象保存为.ds.rds个文件,但我不知道如何。有没有办法可以使用XML序列化来实现这一点,还是有更简单的方法?

2 个答案:

答案 0 :(得分:3)

我有同样的问题,我使用XML序列化来序列化DataSource对象,这里是代码snipet:

DataSource ds = new DataSource();
                    DataSourceDefinition dsDefinition = rs.GetDataSourceContents(item.Path);
                    ds.Item = dsDefinition;
                    sOutFile = string.Format(@"{0}{1}.rds", sOutputDir, item.Name);
                    if (File.Exists(sOutFile))
                        File.Delete(sOutFile);
                    SerializeObject(sOutFile, ds);   // serializes the dataSource object and save it

这是SerializeObject方法,它序列化然后以XML格式保存文件:

private void SerializeObject(string filename, DataSource d)
    {
        try
        {
            XmlSerializer serializer =
            new XmlSerializer(typeof(DataSource));
            // Create an XmlTextWriter using a FileStream.
            Stream fs = new FileStream(filename, FileMode.Create);
            XmlWriter writer =
            new XmlTextWriter(fs, Encoding.Unicode);
            // Serialize using the XmlTextWriter.
            serializer.Serialize(writer, d);
            writer.Close();
        }
        catch (Exception e) { MessageBox.Show("inside serializeObject Method "+e.Message); }
    }

我希望如果有人遇到这个问题,这会有所帮助

答案 1 :(得分:0)

正如kyzen在评论中所说,我使用了一些自定义代码和来自SO Listing all Data Sources and their Dependencies (reports, items, etc) in SQL Server 2008 R2的帖子来获得我想要的结果。