Announcement

Collapse
No announcement yet.

Report mit mehreren Datenbanken verknüpfen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Report mit mehreren Datenbanken verknüpfen

    Hallo,
    ich bin noch total neu in den Report Services.

    Ich soll einen AccessReport, der mit verschiedenen Tabellen in 2 Datenbanken auf dem SQL-Server via ODBC verbunden ist, in einen Report der SQL-Server-2005-Report-Services umstricken.
    Der Report ist soweit auch schon geschafft, nur gelingt es mir leider nicht die Tabelle auf der 2. DB in der SQL-Abfrage anzusprechen.

    Ich habe für jede DB ein DataSet erstellt und kann auch ein Field mit den Daten des 2. DataSets (also der Tabelle auf der 2. DB) im 1. DataSet anlegen, nur hat die SQL-Abfrage Abhängigkeiten auf diese Tabelle. Wie kann ich diese Tabelle in der SQL-Query ansprechen?

    In Access mußte ich nur eine ODBC auf jede Tabelle legen und schon war sie bekannt (egal in welcher DB sie war), im ReportDesigner kann ich in einem DataSet wohl nur auch ODBC´s einer DB zugreifen.

    Bin für jeden Tip dankbar.

  • #2
    Hallo,

    das Auswertungen von mehreren Datenbanken ist auch in den Reporting Services möglich, allerdings muss dies bereits in der SELECT-Anweisung der "Hauptdatenbank" erfolgen. Die SELECT-Abfrage liefert nur eine Ergebnismenge zurück, in der die über einen JOIN verknüpften Daten (benötigte Spalten) aus beiden Datenbanken bereits enthalten sind. In der SELECT-Anweisung kann man über die Syntax FROM Datenbankname.Eigentümer.Tabellenname (Beispiel: SELECT * FROM Northwind.dbo.Customers) direkt auf die Daten aus einer anderen Datenbank der gleichen SQL Server-Instanz zugreifen. Wenn die Daten auf verschiedenen SQL Server-Instanzen laufen, hilft die Kombination von einem LinkedServer mit einem Synonym weiter, um alle Daten in einer Ergebnismenge zu packen, die vom Bericht angezeigt werden soll.

    P.S: Im Gegensatz zu MS ACCESS ist der MS SQL Server eine "richtige" SQL-Datenbank, so dass es nicht sinnvoll ist, das ACCESS-Prinzip mit dem MS SQL Server nachzubauen.

    Comment


    • #3
      Danke für die Anregung, leider weiß ich nicht so genau wie ich vorgehen soll.

      Also ich habe ja als DataSource die HauptDB angegeben, der ConnectionString lautet Data Source=unser Server;Initial Catalog=HauptDB. Dort kann ich keine 2. DB angeben. Das DataSet hat also die DataSource auf nur diese 1 DB. Wenn ich nun im Query unter InnerJoin die 2. DB mit angebe bekomm ich bei der Vorschau den Fehler "Falsche Syntax in der Nähe von (Anfang des Namens der 2. DB).

      Ich muß doch eigentlich auch die 2. DB im ConnectionString haben, oder?


      Hab wie gesagt mit Reports noch garkeine Erfahrungen.

      Comment


      • #4
        Hallo,

        wenn beide DBs auf dem gleichen Server liegen und Du Zugriffsrechte auf beide hast, ist es ganz einfach, Du musst nur eine vollqualifizierte Bezeichnung im Format [Datenbank].[Schema].[Tabelle] angeben, also z.B.

        [highlight=sql]
        SELECT *
        FROM [Datenbank1].[dbo].[Tabelle] AS Db1Tab
        INNER JOIN
        [Datenbank2].[dbo].[Tabelle] AS Db2Tab
        ON ....
        [/highlight]

        Olaf
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment


        • #5
          Ich glaube es liegt am Datenbankname.

          Die DB heißt 8_Jahre_Server(natürlich heißt die echte DB ander, hat aber die gleiche Syntax). Wie kann ich auf eine Datenbank mit diesem Namen zugreifen? Wenn ich den Namen in JahreDatenbank änder geht es. Aber ich muß leider den Namen der Datenbank so nehmen, wie er auf dem Produktivserver ist, muß also irgentwie mit 8_Jahre_Server zurechtkommen.

          Scheinbar stört sich das Dataset an der 8. Wie kann ich auf eine Datenbank mit sooch einer NamensSyntax zugreifen?

          Comment


          • #6
            Eigentlich sollte er sich nicht an der 8 oder am Underscore stören.

            Wenn man Sonderzeichen im datenbank-/Tabellennamen hat, sollte man sie in eckige Klammern setzten, so wie oben.

            [Datenbank].[Schema].[Tabelle]

            Olaf
            Olaf Helper

            <Blog> <Xing>
            * cogito ergo sum * errare humanum est * quote erat demonstrandum *
            Wenn ich denke, ist das ein Fehler und das beweise ich täglich

            Comment


            • #7
              Danke, das wars :-)

              Comment


              • #8
                Ich erzähle auch was, in meinem Influenza-Delirium...

                Wie man in der SQL BOL unter "Regeln für reguläre Bezeichner" nachlesen kann, darf ein Bezeichner mit a-Z sowie "_" beginnen, aber nicht mit einer Ziffer; die dürfen erst ab der 2. Stelle kommen.

                Es war also die 8 an der ersten Stelle, die der SQL nicht mag.

                Olaf
                Olaf Helper

                <Blog> <Xing>
                * cogito ergo sum * errare humanum est * quote erat demonstrandum *
                Wenn ich denke, ist das ein Fehler und das beweise ich täglich

                Comment

                Working...
                X