Announcement

Collapse
No announcement yet.

Auf vorhandene Subscription prüfen / Auflisten der Subscriptions

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

  • Auf vorhandene Subscription prüfen / Auflisten der Subscriptions

    Kann mir jemand sagen, wie ich per TSQL die Liste der (Replikations-) Subcriptions auflisten kann?
    Und/Oder, wie ich feststellen kann, dass eine Subscription schon angelegt wurde?

    JL

  • #2
    Hallo Jürgen,

    auf dem Verleger kannst Du in der "distribution" Db z.B. über

    exec sp_MSenum_merge

    alle Subscriber einer Merge-Replikationen ermitteln und mit sp_MSenum_snapshot die Snapshots. Dann gibt es noch einige SPs mehr zu dem Thema.

    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


    • #3
      Hallo Olaf!

      bekomme im Query Fenster folgende Fehlermeldung
      (Sowohl auf dem "Server", wie auf dem mobilen "Client"):

      Meldung 208, Ebene 16, Status 1, Prozedur sp_MSenum_merge, Zeile 69
      Ungültiger Objektname 'dbo.MSmerge_agents'.

      Die MergeRep läuft übrigens!

      Sonst noch eine Idee?

      JL

      Comment


      • #4
        Hallo Jürgen,

        hattest Du das auf der System-Datenbank "distribution" ausgeführt (s. oben)?
        Die Tabelle gibt es nur dort.
        Zu SQL 2000 gab es auch nur dort die SP, mittlerweile ist sie in jeder DB vorhanden.

        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
          Hallo Olaf,
          <<hattest Du das auf der System-Datenbank "distribution" ausgeführt (s. oben)?>>

          Ja (auf dem Publisher)!
          use [master]
          exec sp_MSenum_merge
          ->
          Meldung 208, Ebene 16, Status 1, Prozedur sp_MSenum_merge, Zeile 69
          Ungültiger Objektname 'dbo.MSmerge_agents'.


          Ich habe auf dem Server und auf dem MobilPC die Distribution eingerichtet.
          Sie funktioniert!

          Hintergrund meiner Fragestellung ist, dass ich für den Admin am lokalen/mobilen PC ein Menuitem "Datenbanken abgleichen" habe.
          Ist kein Abo vorhanden, soll dieses "on the fly" eingerichtet werden.

          Auch das "on the fly" Einrichten funktioniert.

          Mir fehlt die Entscheidungshilfe, ob das Abo schon vorhanden ist. Mit und ohne Verbindung zum Publisher. (Für "mit" hätte ich eine Lösung)

          Daher will ich die vorhandenen Abos in der mobilen PC DB prüfen. Habe aber bisher keinen sicheren und einfachen Weg gefunden.

          Übrigens der Publisher ist ein SQL2005
          Der mobile PC hat SQLExpress istalliert.

          Ich bin für jede Hilfe dankbar!

          Gruß
          JL
          Zuletzt editiert von Juergen Loewner; 14.01.2008, 18:02.

          Comment


          • #6
            Hallo Jürgen
            <<hattest Du das auf der System-Datenbank "distribution" ausgeführt (s. oben)?>>
            Ja (auf dem Publisher)!
            use [master]
            exec sp_MSenum_merge
            Nein...
            Wenn Du vorher
            use [master]
            ausführst, führst Du die SP auf der "master" aus, nicht auf der "distribution"

            use [distribution]
            exec sp_MSenum_merge

            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
              Hallo Olaf,
              das funktioniert auf dem Publisher.
              Nicht auf dem Abonnenten!

              Zur Zeit nutze ich:
              private bool subscriptionExists() {
              ..
              string subscriberName = System.Windows.Forms.SystemInformation.ComputerNam e + "\\SQLEXPRESS";

              string aCmd = "select subscriber from distribution.dbo.MSmerge_subscriptions "+
              "where publisher='" + publisherName + "' and publisher_db='" + publicationDbName + "'";

              bool result = false;
              LibJL1.DataBases.SQL sql = new LibJL1.DataBases.SQL();
              SqlConnection oSqlConnection = new SqlConnection(sql.ConnectionString(publisherName, publicationDbName));

              SqlCommand Cmd = new SqlCommand(aCmd, oSqlConnection);
              string aSubscriber = "";
              SqlDataReader rdr = null;
              Cmd.Connection.Open();
              try {
              rdr = Cmd.ExecuteReader();
              if(rdr.Read()) aSubscriber = (string)rdr["subscriber"];
              } finally {
              Cmd.Connection.Close();
              }
              result = subscriberName .ToUpper() == aSubscriber.ToUpper();
              return result;

              Das löst aber nicht mein Problem, wenn der Publisher offline ist.
              Zur Zeit habe ich ein Workaround, das ein Verbindungstest zum Publisher dies abfängt.

              Irgendwie geht es also.

              Aber ich wüsste schon gerne, ob der Abo Status lokal abfragbar wäre.

              Hast Du noch eine Idee?

              Gruß
              JL
              Zuletzt editiert von Juergen Loewner; 14.01.2008, 19:30.

              Comment


              • #8
                Hallo Jürgen,

                mit
                exec sp_MSenumallsubscriptions
                kannst Du für eine Instanz alle Abonnements ermitteln, mit den Parametern kannst Du noch auf Typ, Publisher und DB einschränken; kann auf jeder beliebigen DB ausgeführt werden.

                exec sp_helpmergesubscription
                liefert für die aktuelle DB die Merge-Subscriptions.
                Auf meinem SQL2000 kommt zwar ein Fehler, liefert aber trotzdem ein Ergebnis.

                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


                • #9
                  Hallo Olaf,
                  Entschuldigung, dass die Antwort so lange auf sich warten liess.
                  Aber ich hatte einen Termin in der Folterkammer meines Zahnreissers und es ging mir danach irgendwie nicht so hip.

                  "exec sp_helpmergesubscription" funktioniert (mit Fehlermeldung).

                  Ich denke, dass ist es, was ich gesucht habe.

                  Danke!

                  Gruß
                  JL

                  Comment


                  • #10
                    Kein Problem, das Forum war eh irgendwie Offline.

                    Vielleicht finde ich noch was, was auch ohne Fehler geht.

                    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