Probleme mit der Wasserversorgung

Das Business Intelligence Development Studio (BIDS) für SQL Server 2008 und SQL Server 2008 R2 sind eigentlich ziemlich gleich. Oder doch nicht?

Je mehr ich mich mit dem Thema beschäftige, um so mehr fühle ich mich an die Szene im "Leben des Brian" erinnert, wo diskutiert wurde, dass die Römer nichts Gutes gebracht haben, außer der öffentlichen Ordnung, Schulen, der Wasserversorgung und und und ...!
BIDS 2008 und 2008 R2 sind also gleich, außer bei der Behandlung von Datenquellen und und und ...!

Man kann problemlos mit dem BIDS 2008 R2 ein SSIS oder SSRS Projekt für SQL Server 2008 öffnen. Die Version der Projektmappe wird etwas angemeckert, kann aber sofort aktualisiert werden. Die Objekte lassen sich weiterhin auf einem SQL Server 2008 bereitstellen. Man kann die Objekte verändern und sie lassen sich immer noch bereitstellen. Das funktioniert aber nur bis zu einem gewissen Punkt. Hier ist die Zusammenstellung der Einschränkungen, die ich beim ersten Suchen gefunden habe!

SSIS

Hier verweise ich auf den Artikel Moving SSIS Packages with ADO.NET Destinations Between 2008 R2 and 2008, da ich in dem Bereich bisher sowieso vorsichtiger war und erst gar nicht versucht habe die Kompatibilität zu strapazieren.

SSRS

1. Verbindungen

Bestehende Reports lassen sich verändern und bereitstellen, solange man keine neuen Verbindungen hinzu nimmt und anschliessend versucht diesen Bericht mit einem Tool passend zur Vorgängerversion wieder zu öffnen. Wenn man jetzt versucht so einen Report mit dem BIDS für SQL Server 2008 (oder dem dazugehörigen Report Builder 2.0) zu öffnen erhält man die Meldung: Requested value 'Integrated' was not found. oder auf deutsch: Der angeforderte Wert "Integrated" konnte nicht gefunden werden.

Wo liegt jetzt die Ursache? Die sieht man erst im Code des Reports! Hierbei verdient die Zeile, die mit <rd :SecurityType> anfängt besondere Beachtung!

SQL Server 2008

<datasources>
    <datasource Name="MeinServer">
      <connectionproperties>
        <dataprovider>SQL</dataprovider>
        <connectstring>Data Source=<server>;Initial Catalog=<datenbank></datenbank></server></connectstring>
        <integratedsecurity>nnectionProperties>
      <rd :SecurityType>Windows</rd>
      <rd :DataSourceID>00bc0497-3202-4874-98ee-7858ac321f5d</rd>
    </integratedsecurity></connectionproperties></datasource>
  </datasources>

Bei SQL Server 2008 R2 ist eine Zeile anders:

      <rd :SecurityType>Integrated</rd>

Hier hat sich also lediglich die Nomenklatur bzgl. der Verbindungen geändert. Der Report Server für SQL Server 2008 kommt hiermit klar, aber nicht die dazugehörigen Tools. Siehe hierzu auch folgenden Forenbeitrag.

2. Grafiken

Weiterhin gibt es Schwierigkeiten, wenn man in einen Bericht Grafiken einfügt, die es zwar auch schon in SQL Server 2008 gab, aber jetzt anscheinend anders dargestellt werden. Bei der Bereitstellung des Berichts erhält man auf dem Client die folgende Fehlermeldung: An unexpected error occurred in Report Processing.

Im Errorlog des Report Servers findet sich folgender Abschnitt:

ERROR: Throwing Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: An unexpected error occurred in Report Processing., ;
 Info: Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: An unexpected error occurred in Report Processing. ---> System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.

Schaut man sich dieses genauer an, so findet man jetzt eine Zeile mehr im Code des Berichts.

Bei SQL Server 2008 R2 ist eine Zeile mehr:

      <Chart Name="Chart1">
        <ChartCategoryHierarchy>
          <ChartMembers>
            <ChartMember>
              <Group Name="ChartGroup" />
              <Label />

Bei SQL Server 2008 fehlt diese Zeile:

              <Group Name="ChartGroup" />

3. Nicht abwärtskompatible Optionen

Hat man in einer Projektmappe Berichte, die bereits neue Elemente von SQL Server 2008 R2 verwenden, erhält man eine Fehlermeldung, wenn man solche Berichte bereitstellen möchte. Das ist auch absolut verständlich, da man ja neuerdings auch in den Projekteigenschaften die TagertServerVersion definieren muss. Das BIDS weiß also über die Zielversion Bescheid und verhindert falsches Deployment. Eine Fehlermeldung sieht dann z. B. so aus:

Der Statusindikator "Indicator1" wurde im Bericht erkannt. SQL Server 2008 Reporting Services unterstützt Statusindikatoren nicht. Reduzieren Sie entweder die Fehlerstufe auf einen Wert kleiner als 2, oder ändern Sie ReportServerTargetVersion in eine Version, die Statusindikatoren unterstützt.

Lösungsmöglichkeit für SSRS

Man kann den Code auch für SQL Server 2008 mit dem BIDS 2008 R2 editieren und bereitstellen. Falls neue Verbindungen oder Grafiken eingebunden werden sollen, so muss der XML-Code manuell editiert werden, damit er auch noch unter SQL Server 2008 funktioniert.

Alternativ verwendet man zwei Installationen vom BIDS, die sich aber nicht auf dem gleichen PC befinden dürfen, da sie sich gegenseitig ausschließen.