SSRS (SQL Server Reporting Services)

0

Witam.
Czy znalazłby się tutaj ktoś, kto zechciałby podzielić się ze mną wiedzą związaną z SQL Server Reporting Services?

Sytuacja wygląda tak:
Mam SQL Server 2014 w wersji Express oraz zainstalowaną usługę SQL Server Reporting Services. Utworzone raporty, które zaciągają dane z bazy "produkcyjnej". Z poziomu komputera z raportami i bazą loguję się http://localhost:8080/Raporty/ i po kliknięciu na link na stronie przenosi mnie na stronę z linkami do poszczególnych raportów. Po kliknięciu na raport otwiera się wyświetlając dane.

Pytania:
Czy jest jakiś graficzny interface, który zastąpiłby domyślnie tą stronę z linkami do raportów.
Logowanie z sieci do serwera raportów wymaga zapewne konfiguracji użytkowników - jak dodać typowego "przeglądacza" raportów?
Jak integrować raporty z aplikacją np. w MVC ASP.NET?
Jaka mogłoby być alternatywne rozwiązanie?

Możecie podać linki do dobrych materiałów nt. SQL Server Reporting Services?

1
gg napisał(a):

Czy jest jakiś graficzny interface, który zastąpiłby domyślnie tą stronę z linkami do raportów.

No, ta strona to jest właśnie standardowy, graficzny interfejs.

Jak integrować raporty z aplikacją np. w MVC ASP.NET?

Kilka lat temu rozwiązywałem ten problem i użyłem po prostu kontrolki ReportViewer (z WebFormsów!) osadzonej na stronie ASP.NET MVC. Nie jest to specjalnie intuicyjne, więc wklejam swoje skrawki kodu.

  1. W kontrolerze po prostu mam: return View();.

  2. W cshtml mam takie coś:

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>
    @ViewBag.ReportDisplayName</h2>
<iframe name="ReportIFrame" scrolling="no" id="ReportIFrameID" width="100%" height="800px"
    frameborder="0" src="@(Url.Content("~/WebPages/ReportHost.aspx") + "?ReportName=" + ViewBag.ReportName)" >
</iframe>
  1. W ReportHost.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ReportHost.aspx.cs"  Inherits="SuperProject.WebPages.ReportHost" %>

<%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <rsweb:ReportViewer ID="ReportViewer1" runat="server" Width="740" Height="750"
            BackColor="White" >
        </rsweb:ReportViewer>
    </div>
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    </form>
</body>
</html>
  1. W code behind:
public partial class ReportHost : System.Web.UI.Page
{
    protected void Page_Init(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            string reportName = this.Request["ReportName"];

            ReportViewer1.ProcessingMode = ProcessingMode.Remote;
            ReportViewer1.ServerReport.ReportServerUrl = new Uri(@"http://localhost/ReportServer");
            ReportViewer1.ServerReport.ReportPath = string.Format(@"/SuperProjectReports/{0}", reportName);
        }
    }
} 
  1. W RegisterRoutes: routes.IgnoreRoute("WebPages/ReportHost.aspx");.

  2. W web.config
    a) w system.webdwie nowe gałęzie:

<httpHandlers>
    <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
      validate="false" />
</httpHandlers>
<buildProviders>
    <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</buildProviders>

b) w system.webServer:

<handlers>
    <add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</handlers>

To chyba tyle.

P.S. To nie jest temat stricte bazodanowy, przenoszę do .NET.

1 użytkowników online, w tym zalogowanych: 0, gości: 1