Announcement

Collapse
No announcement yet.

Kommunikation zwischen SQL Instanzen

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

  • Kommunikation zwischen SQL Instanzen

    Hallo Leute,
    Ich habe jetzt schon ne halbe Ewigkeit gegoogelt, aber leider keine Antwort auf meine Frage erhalten.
    Und zwar habe ich zwei unterschiedliche Server auf denen MSSQL Express läuft. Beide Server sind per VPN miteinander verbunden. (Befinden sich also im selben lokalen Netz)
    Die Frage ist jetzt, ob es irgendwie möglich ist zwischen beiden SQL Instanzen zu kommunizieren.
    Also zum Beispiel, dass wenn ein Datensatz in die eine Tabelle der Instanz A geschriben wird, dass ein Trigger ihn automatisch auch noch in die andere Tabelle in der anderen Instanz schreibt.
    Es muss da doch irgendeine schlaue Möglichkeit geben. Natürlich könnte ich ein externes Programm schreiben, welches die Schnittstelle darstellt, aber geht das nicht einfacher?
    Ich freue mich auf eure Vorschläge
    777

  • #2
    Hallo,

    du mußt im Managementstudio unter "Serverobjekte" einen Verbindungsserver einrichten, dann kannst du per

    Verbindungsservername.RemoteDatenbankName.SchemaNa me.Tabellenname

    auf den 2. Server zugreifen;

    also sinngemäß

    [highlight=sql]
    SELECT * FROM server2.nothwind.dbo.emloyes
    [/highlight]


    Viel Erfolg!
    Tino
    Ich habs gleich!
    ... sagte der Programmierer.

    Comment


    • #3
      Leider funktioniert dieser Weg bei mir nicht.
      Ich habe die beiden Server erfolgreich über "Verbindung hinzufügen" miteinander verbunden. Das bedeutet, dass jetzt in einem Studio zwei Instanzen auftauchen. Die lokale, und die im Netz.
      Ich kann per Namensauflösung "testpc" in 192.168.0.100 auflösen. (Was der zweite Server ist)
      Code:
      SELECT * FROM testpc.testdb.mailtest
      wirft dennoch eine Meldung:
      Code:
      Meldung 208, Ebene 16, Status 1, Zeile 2
      Ungültiger Objektname 'testpc.testdb.mailtest'.

      Comment


      • #4
        Da fehlt irgendein Teil im Namen 'Server.Datenbank.Owner/Schema.Tabelle'.

        Comment


        • #5
          Da fehlt das Schema testpc.testdb.???.mailtest
          Höchstwahscheinlich DBO

          Comment


          • #6
            Über "Verbindung hinzufügen" kannst du das nicht machen. Damit machst du nur eine zweite Connection auf, die beiden Server selber sind deswegen aber immer noch nicht verbunden! Wenn du keinen Verbindungsserver einrichten kannst (die Meldung " Leider funktioniert dieser Weg bei mir nicht" ist da ja äußerst hilfreich), dann bleibt dir höchstens noch der Weg über OPENROWSET. Da gibt es fast ganz unten im Artikel ein paar Beispiele.
            Aber einfach nur den Namen des zweiten SQL-Servers anzugeben reicht nicht, weil ja der erste Server deswegen nicht weiß, mit welchem Username/Passwort er sich verbinden kann (deswegen diese Parameter im OPENROWSET).

            bye,
            Helmut

            Comment


            • #7
              also sinngemäß
              [highlight=sql]
              SELECT * FROM server2.nothwind.dbo.emloyes
              [/highlight]
              Huuuaaaa, sorry, da bekomme ich ja jetzt selber Augenkrebs
              Deshalb Korrektur:

              [highlight=sql]
              SELECT * FROM server2.northwind.dbo.employees
              [/highlight]

              Zur eigentlichen Sache haben die Vorschreiber denke ich alles gesagt.
              Viel Erfolg
              Tino
              Ich habs gleich!
              ... sagte der Programmierer.

              Comment


              • #8
                Danke für eure Hinweise. Ich habe es jetzt endlich geschafft!
                Und zwar lag es von anfang an daran, weil ich das "dbo" vergessen hatte. Ich werde mich jetzt mal schlau machen, was dbo überhaupt ist. (Database Object - Schema) kp...

                Dennoch hier der Weg mit dem es klappt für alle mit ähnlichen Problemen:

                1. Schritt Verbindungsserver hinzugefügt:

                Code:
                EXEC sp_addlinkedserver
                   @server = 'testpc',
                   @srvproduct = '',
                   @provider = 'SQLNCLI',
                   @location = '',
                   @datasrc = '192.168.0.100\SQLEXPRESS',
                   @provstr = 'DRIVER={SQL Server};Data Source=Sightview\SQLEXPRESS;UID=sa;PWD=passwort123;',
                   @catalog = 'NULL'
                Diese SP wird ohne Fehler ausgeführt.
                Wenn ich anschließend versuche auf den Server zuzugreifen:

                Code:
                SELECT * FROM server2.northwind.dbo.employees
                kam ohne das dbo immer folgender Fehler:

                Code:
                Meldung 18456, Ebene 14, Status 1, Zeile 1
                Fehler bei der Anmeldung für den Benutzer 'sa'.
                Meldung 4060, Ebene 11, Status 1, Zeile 1
                Die von der Anmeldung angeforderte "NULL"-Datenbank kann nicht geöffnet werden. Fehler bei der Anmeldung.
                Der OLE DB-Anbieter "SQLNCLI" für den Verbindungsserver "testpc" hat die Meldung "Ungültiges Attribut für die Verbindungszeichenfolge" zurückgeben.

                Mit dem dbo bekomme ich die richtigen Datensätze.
                Dankeschön!

                777

                Comment


                • #9
                  Ich werde mich jetzt mal schlau machen, was dbo überhaupt ist.
                  dbo ist das "Standard Schema" im SQL Server und steht als Abkürzung für Database Owner; einen User, den es in jeder DB gibt (früher <= 2000 waren Schema immer User-gebunden)
                  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