直接在数据库中修改 SSRS 不会反映在 ReportViewer 中

Modifying SSRS directly in the Database does not reflect in ReportViewer

我正在开发基于 Web 的 SSRS 编辑器。我已经成功开发了一个解析器,它从数据库的 CATALOG Table 访问 SSRS 模式并将其转换为 HTML.

从这里用户可以修改报告并提交更改,Parser 再次接收 HTML 并将其转换为 Desire 结果。

但是当我在 ReportViewer 中访问该报告时,它仍然显示旧报告。

当我从 Report Manage URL 下载报告时,它显示了我对应用程序所做的更改。

我怀疑微软是否也在以物理格式存储 RDL。

请帮忙..

终于找到解决办法了。在我直接更新 Catalog table 中的 Content 列之前,虽然在数据库中更新了更改,但它没有反映出来在实际的实时报告中。

经过一番搜索,我找到了 this。如何通过代码部署报表,大功告成

class Sample {
static void Main(string[] args)
{
    ReportingService2010 rs = new ReportingService2010();
    rs.Url = "http://<Server Name>" +
        "/_vti_bin/ReportServer/ReportService2010.asmx";
    rs.Credentials = 
        System.Net.CredentialCache.DefaultCredentials;

    Byte[] definition = null;
    Warning[] warnings = null;
    string name = "MyReport.rdl";

    try
    {
        FileStream stream = File.OpenRead("MyReport.rdl");
        definition = new Byte[stream.Length];
        stream.Read(definition, 0, (int)stream.Length);
        stream.Close();
    }
    catch (IOException e)
    {
        Console.WriteLine(e.Message);
    }

    try
    {
        string parent = "http://<Server Name>/Docs/Documents/";
        CatalogItem report = rs.CreateCatalogItem("Report", name, parent,
                    false, definition, null, out warnings);

        if (warnings != null)
        {
            foreach (Warning warning in warnings)
            {
                Console.WriteLine(warning.Message);
            }
        }

        else
            Console.WriteLine("Report: {0} created successfully " +
                              " with no warnings", name);
    }
    catch (SoapException e)
    {
        Console.WriteLine(e.Detail.InnerXml.ToString());
    }
} }