Announcement

Collapse
No announcement yet.

gleicher Tabellenname in zwei Datenbanken verweigert

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

  • gleicher Tabellenname in zwei Datenbanken verweigert

    Hallo liebe Entwicklergemeinde,
    ich habe einen SQL-Server 2005 in dessen Instanz drei Datenbanken db1, db2,db3 laufen.
    Zwei der Datenbanken (db1 + db2) haben die Tabellen via Import aus einem 2000er-SQL-Server erhalten. In beiden Datenbanken heißen die Tabellen identisch (db1.dbo.tblAuftraege + db2.dbo.tblAuftraege)

    Nun habe ich manuell in db1 eine Tabelle tblMandanten angelegt.
    Aufgrund dessen, dass wir zwei Datenbanken (je ein Mandant in db1 + db2) zu einer Datenbank (db3) verschmelzen müssen, muß ich in der neuen Datenbank db3 ebenfalls diese Tabellen mit gleicher Bezeichnung anlegen.

    Der Server verweigert dies aber mit der Meldung:
    Ein Objekt mit dem Namen "dbo.tblMandanten" besteht bereits in der Datenbank.

    Woran liegt das ? Was muß ich ändern damit dies geht ?

    Gruß, Mario

  • #2
    Definier mal einen neuen User als dbo. Ansonsten sieht der dbo schon diese Tabellen aus den anderen DB's auch ohne Vorsatz "db1"

    Comment


    • #3
      Woran liegt das ?
      Na, daran, das es in der DB die Tabelle schon gibt.

      Wolltest Du per Import nun in db3 die Tabelle tblMandant aus db1 + db2 übernehmen?
      Wenn Du den Wizard nutzt, da gibt es die Option, das nur die Daten übernommen werden, ohne das die Tabellen dabei angelegt werden.
      Wenn die Namen (Tabelle + Felder) gleich sind, erkennt der Wizard das und legt das Mapping automatisch an.
      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


      • #4
        Dann bekomme ich Probleme mit dem Zugriff aus der Software:
        select * from dbo.tblMandanten
        oder ich müßte die komplette Software ändern.
        Gibt es einen anderen Weg ?
        Ich meine beim Import von identisch bezeichneten Tabellen in den zwei Datenbanken gab es auch keine Probleme. D.h. diese exisiteren auch real und der Zugriff funktioniert auch sauber.

        Comment


        • #5
          Originally posted by O. Helper View Post
          Na, daran, das es in der DB die Tabelle schon gibt.

          Wolltest Du per Import nun in db3 die Tabelle tblMandant aus db1 + db2 übernehmen?
          Wenn Du den Wizard nutzt, da gibt es die Option, das nur die Daten übernommen werden, ohne das die Tabellen dabei angelegt werden.
          Wenn die Namen (Tabelle + Felder) gleich sind, erkennt der Wizard das und legt das Mapping automatisch an.
          In db1 gibt es eine Tabelle dbo.tblAuftraege und in Tabelle db2 gibt es diese Tabelle ebenfalls. Nun müssen wir beide Tabellen zu einer neuen Tabelle in der db3 verschmelzen (erweitert um Spalten). So daß am Ende die Software auf die gleiche Tabellen-Bezeichnung wie zuvor zugreift und nur eine andere Datenbank angegeben werden muß.

          Comment


          • #6
            Originally posted by O. Helper View Post
            Na, daran, das es in der DB die Tabelle schon gibt.

            Wolltest Du per Import nun in db3 die Tabelle tblMandant aus db1 + db2 übernehmen?
            Wenn Du den Wizard nutzt, da gibt es die Option, das nur die Daten übernommen werden, ohne das die Tabellen dabei angelegt werden.
            Wenn die Namen (Tabelle + Felder) gleich sind, erkennt der Wizard das und legt das Mapping automatisch an.

            Hallo,
            wie meinst n das? Der SQL-Server müsste ja die Primär/Fremdschlüsselzuordnung umschreiben dass alles am Ende wieder funktioniert?!

            @Koch
            Wie lautet die MandantenId in db1 und in db2? Wenn beide gleich lauten, dann kannst du das so nicht machen. Um welche Software handelt es sich?

            Comment


            • #7
              Ich habe etwas den Eindruck, wir reden aneinander vorbei.

              Mal zurück zum Anfang, es kommt die Meldung "... Tabelle bereits vorhanden"

              Führe mal auf db3 das Script aus:
              [highlight=SQL]SELECT T.name, S.name
              FROM sys.tables AS T
              INNER JOIN sys.schemas AS S
              ON T.schema_id = S.schema_id
              WHERE T.name = 'tblMandanten'
              AND S.name = 'dbo'
              [/highlight]
              Wenn es ein Ergebnis liefert, ist die Tabelle bereits vorhanden; das was ich meinte.

              Der SQL-Server müsste ja die Primär/Fremdschlüsselzuordnung umschreiben
              Sorry, aber ich verstehe nicht, was Du meinst.
              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


              • #8
                Originally posted by O. Helper View Post
                Sorry, aber ich verstehe nicht, was Du meinst.
                db1.dbo.tbl_mandant
                id, name
                1, Müller

                db2.dbo.tbl_mandant
                id, name
                1, Hammer

                Kollision wenn mehrfach der gleiche Primärschlüssel in deine Tabelle geschrieben werden soll. Daten gleicher Tabellen sollen ja in eine Tabelle geschrieben werden.
                db3.dbo.tbl_mandant
                id, name
                1, Müller
                1, Hammer <- 1 gibt es ja schon nach dem ersten Import als Primärschlüssel

                Wenn die ID von Hammer in 2 geändert wird beim Import müssen ja alle Fremdschlüssel die sich auf Hammer 1 beziehen in 2 umgeändert werden....

                Comment


                • #9
                  Ok, verstehe ich; nur nicht, was das mit der ursprünglichen Frage zu tun hat.

                  Klar, in so einem Fall muss man die IDs natürlich selbst umsetzten, z.B. über eine Mappingtabelle mit MandantID alt=>neu
                  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