Erstellen eines Abonnements für einen Nicht-SQL Server-Abonnenten

Gilt für:SQL Server

In diesem Thema wird beschrieben, wie Sie ein Abonnement für einen Nicht-SQL Server-Abonnenten in SQL Server mithilfe von SQL Server Management Studio oder Transact-SQL erstellen. Transaktions- und Momentaufnahmereplikation unterstützen die Veröffentlichung von Daten an Nicht-SQL-Server-Abonnenten. Informationen zu den unterstützten Abonnentenplattformen finden Sie unter Non-SQL Server Subscribers.

Verwendung von SQL Server Management Studio

So erstellen Sie ein Abonnement für einen Nicht-SQL-Server-Abonnenten:

  1. Nehmen Sie die Installation und Konfiguration der entsprechenden Clientsoftware und OLE DB-Anbieter auf dem SQL Server-Verteiler vor. Weitere Informationen finden Sie unter Oracle-Abonnenten und IBM Db2-Abonnenten.

  2. Erstellen Sie mithilfe des Assistenten für neue Veröffentlichungen eine Veröffentlichung. Weitere Informationen zum Erstellen von Veröffentlichungen finden Sie unter Erstellen einer Veröffentlichung und Erstellen einer Veröffentlichung aus einer Oracle-Datenbank. Geben Sie im Assistenten für neue Veröffentlichungen die folgenden Optionen an:

    • Wählen Sie auf der Seite Veröffentlichungstyp entweder Momentaufnahmeveröffentlichung oder Transaktionsveröffentlichungaus.

    • Deaktivieren Sie auf der Seite Momentaufnahmen-Agent die Option Snapshot sofort erstellen.

      Die Erstellung der Momentaufnahme erfolgt nach der Aktivierung der Veröffentlichung für Nicht-SQL Server-Abonnenten, um sicherzustellen, dass der Momentaufnahme-Agent eine Momentaufnahme und Initialisierungsskripts generiert, die für Nicht-SQL Server-Abonnenten geeignet sind.

  3. Verwenden Sie zur Aktivierung der Veröffentlichung für Nicht-SQL Server-Abonnenten das Dialogfeld Veröffentlichungseigenschaften - <Veröffentlichungsname>. Weitere Informationen zu diesem Schritt finden Sie unter Publication Properties, Subscription Options .

  4. Erstellen Sie ein Abonnement mit dem Assistenten „Neues Abonnement“. In diesem Thema sind weitere Informationen zu diesem Schritt enthalten.

  5. (Optional) Ändern Sie die pre_creation_cmd-Artikeleigenschaft, um Tabellen beim Abonnenten beizubehalten. In diesem Thema sind weitere Informationen zu diesem Schritt enthalten.

  6. Generieren Sie eine Momentaufnahme für die Veröffentlichung. In diesem Thema sind weitere Informationen zu diesem Schritt enthalten.

  7. Synchronisieren Sie das Abonnement. Weitere Informationen finden Sie unter Synchronize a Push Subscription.

So aktivieren Sie eine Veröffentlichung für Nicht-SQL Server-Abonnenten

  1. Stellen Sie mit dem Herausgeber in SQL Server Management Studio eine Verbindung her, und erweitern Sie dann den Serverknoten.

  2. Erweitern Sie den Ordner Replikation , und erweitern Sie dann den Ordner Lokale Veröffentlichungen .

  3. Klicken Sie mit der rechten Maustaste auf die Veröffentlichung, und klicken Sie dann auf Eigenschaften.

  4. Wählen Sie auf der Seite Abonnementoptionen den Wert Wahr für die Option Nicht-SQL Server-Abonnenten zulassenaus. Beim Auswählen dieser Option werden eine Reihe von Eigenschaften so geändert, dass die Veröffentlichung mit Nicht-SQL Server-Abonnenten kompatibel ist.

    Hinweis

    Durch Auswählen von True wird der Wert der Eigenschaft des Artikels pre_creation_cmd auf „drop“ festgelegt. Mit dieser Einstellung wird angegeben, dass bei der Replikation auf dem Abonnenten eine Tabelle gelöscht werden soll, wenn sie mit dem Namen der Tabelle in dem Artikel übereinstimmt. Wenn auf dem Abonnenten vorhandene Tabellen vorhanden sind, die Sie beibehalten möchten, verwenden Sie für jeden Artikel die gespeicherte Prozedur sp_changearticle; geben Sie für pre_creation_cmd den Wert 'none' an: sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'.

  5. Wählen Sie OK aus. Sie werden zur Erstellung einer neuen Momentaufnahme für die Veröffentlichung aufgefordert. Wenn Sie zu diesem Zeitpunkt keine erstellen möchten, führen Sie die im nächsten „How-to“-Verfahren beschriebenen Schritte zu einem späteren Zeitpunkt aus.

So erstellen Sie ein Abonnement für einen Nicht-SQL Server-Abonnenten

  1. Erweitern Sie den Ordner Replikation , und erweitern Sie dann den Ordner Lokale Veröffentlichungen .

  2. Klicken Sie mit der rechten Maustaste auf die entsprechende Veröffentlichung, und klicken Sie dann auf Neue Abonnements.

  3. Stellen Sie auf der Seite Standort des Verteilungs-Agenten sicher, dass die Option Alle Agenten auf dem Verteiler ausführen aktiviert ist. Nicht-SQL Server-Abonnenten unterstützen das Ausführen von Agents beim Abonnenten nicht.

  4. Klicken Sie auf der Seite Abonnenten zunächst auf Abonnent hinzufügen und dann auf Nicht-SQL Server-Abonnenten hinzufügen.

  5. Wählen Sie im Dialogfeld Nicht-SQL Server-Abonnenten hinzufügen den Abonnententyp aus.

  6. Geben Sie im Feld Datenquellennameeinen Wert ein:

    • Bei Oracle ist dies der von Ihnen konfigurierte Transparent Network Substrate-(TNS-)Name.

    • Bei IBM kann dies ein beliebiger Name sein. Im Normalfall wird die Netzwerkadresse des Abonnenten angegeben.

    Der in diesem Schritt eingegebene Datenquellenname und die in Schritt 9 angegebenen Anmeldeinformationen werden von diesem Assistenten nicht überprüft. Sie werden bei der Replikation erst verwendet, nachdem der Verteilungs-Agent für das Abonnement ausgeführt wurde. Vergewissern Sie sich, dass sämtliche Werte getestet wurden, und zwar durch die Verbindungsherstellung mit dem Abonnenten über ein Clienttool (für Oracle z. B. sqlplus ). Weitere Informationen finden Sie unter Oracle-Abonnenten und IBM Db2-Abonnenten.

  7. Wählen Sie OK aus. Auf der Seite Abonnenten des Assistenten wird der Abonnent jetzt in der Abonnent-Spalte angezeigt, wobei in der Abonnementdatenbank-Spalte schreibgeschützt (Standardziel) angezeigt wird:

    • Bei Oracle weist ein Server höchstens eine Datenbank auf, deshalb ist die Angabe der Datenbank nicht erforderlich.

    • Bei IBM Db2 wird die Datenbank in der Eigenschaft Anfangskatalog der DB2-Verbindungszeichenfolge angegeben, die in dem nachfolgend erwähnten Feld Zusätzliche Verbindungsoptionen eingegeben werden kann.

  8. Klicken Sie auf der Seite "Verteiler-Agent-Sicherheit " neben dem Abonnenten auf die Schaltfläche "Eigenschaften" (...), um auf das Dialogfeld "Sicherheit des Verteilungs-Agents " zuzugreifen.

  9. Führen Sie im Dialogfeld Sicherheit für den Verteilungs-Agent folgende Schritte aus:

    • Geben Sie in den Feldern Prozesskonto, Kennwort und Kennwort bestätigen das Konto und Kennwort von Microsoft Windows an, unter dem der Verteilungs-Agent ausgeführt werden soll und unter dem er lokale Verbindungen mit dem Verteiler herstellen soll.

      Für das Konto sind folgende Mindestberechtigungen erforderlich: Mitglied der festen Datenbankrolle db_owner in der Verteilungsdatenbank; Mitglied der Publikationszugriffsliste (PAL); Leseberechtigung für die Momentaufnahmefreigabe; und Leseberechtigung für das Installationsverzeichnis des OLE DB-Anbieters. Weitere Informationen zur PAL finden Sie unter Den Publisher absichern.

    • Geben Sie unter Verbindung mit dem Abonnenten herstellen, in den Feldern Anmeldung, Kennwortund Kennwort bestätigen die Anmeldung und das Kennwort ein, die zum Verbindungsaufbau mit dem Abonnenten verwendet werden sollen. Diese Anmeldung sollte bereits konfiguriert sein und für das Erstellen von Objekten in der Abonnementdatenbank ausreichende Berechtigungen aufweisen.

    • Geben Sie im Feld Zusätzliche Verbindungsoptionen sämtliche Verbindungsoptionen für den Abonnenten in Form einer Verbindungszeichenfolge an (für Oracle sind keine zusätzlichen Optionen erforderlich). Mehrere Optionen müssen durch Semikolons voneinander getrennt werden. Im Folgenden finden Sie ein Beispiel für eine DB2-Verbindungszeichenfolge (die Umbrüche dienen der besseren Lesbarkeit):

      Provider=DB2OLEDB;Initial Catalog=MY_SUBSCRIBER_DB;Network Transport Library=TCP;Host CCSID=1252;  
      PC Code Page=1252;Network Address=MY_SUBSCRIBER;Network Port=50000;Package Collection=MY_PKGCOL;  
      Default Schema=MY_SCHEMA;Process Binary as Character=False;Units of Work=RUW;DBMS Platform=DB2/NT;  
      Persist Security Info=False;Connection Pooling=True;  
      

      Die meisten Optionen in der Zeichenfolge hängen von dem DB2-Server ab, den Sie konfigurieren. Allerdings sollte die Option Process Binary as Character immer auf Falsefestgelegt sein. Zur Identifizierung der Abonnementdatenbank ist ein Wert für die Option Anfangskatalog erforderlich.

  10. Wählen Sie auf der Seite Synchronisierungszeitplan im Menü Agent-Zeitplan einen Zeitplan für den Verteilungs-Agenten aus (in der Regel Fortlaufend ausführen).

  11. Geben Sie auf der Seite Abonnements initialisieren an, ob das Abonnement initialisiert werden soll, und wenn ja, wann:

    • Deaktivieren Sie Initialisieren nur, wenn Sie alle Objekte erstellt und alle erforderlichen Daten in der Abonnementdatenbank hinzugefügt haben.

    • Wählen Sie in der Spalte Initialisieren, wenn in der Dropdownliste Sofort aus, damit der Verteilungs-Agent nach Abschluss dieses Assistenten Momentaufnahmedateien zum Abonnenten überträgt. Wählen Sie Bei der ersten Synchronisierung aus, damit der Agent die Dateien bei der nächsten geplanten Ausführung überträgt.

  12. Erstellen Sie optional auf der Seite Aktionen des Assistenten ein Skript für das Abonnement. Weitere Informationen finden Sie unter Scripting Replication.

Tabellen beim Abonnenten beibehalten

  • Standardmäßig wird durch das Aktivieren einer Veröffentlichung für Nicht-SQL Server-Abonnenten der Wert der pre_creation_cmd-Artikeleigenschaft auf 'drop' festgelegt. Mit dieser Einstellung wird angegeben, dass bei der Replikation auf dem Abonnenten eine Tabelle gelöscht werden soll, wenn sie mit dem Namen der Tabelle in dem Artikel übereinstimmt. Wenn beim Abonnenten bereits Tabellen vorhanden sind, die Sie beibehalten möchten, verwenden Sie für jeden Artikel die gespeicherte Prozedur sp_changearticle; geben Sie für pre_creation_cmd den Wert 'none' an. sp_changearticle @publication= 'MyPublication', @article= 'MyArticle', @property='pre_creation_cmd', @value='none'.

So generieren Sie eine Momentaufnahme für die Veröffentlichung

  1. Erweitern Sie den Ordner Replikation , und erweitern Sie dann den Ordner Lokale Veröffentlichungen .

  2. Klicken Sie mit der rechten Maustaste auf die Veröffentlichung, und klicken Sie dann auf Status des Momentaufnahme-Agents anzeigen.

  3. Klicken Sie im Dialogfeld Status des Momentaufnahme-Agents anzeigen - <Publication> auf Start.

Nachdem der Momentaufnahme-Agent die Momentaufnahme generiert hat, wird eine Meldung angezeigt, die beispielsweise wie folgt lautet: "[100%] Es wurde eine Momentaufnahme mit 17 Artikel(n) generiert."

Verwenden von Transact-SQL

Sie können Pushabonnements an Nicht-SQL Server-Abonnenten mithilfe von gespeicherten Replikationsprozeduren programmgesteuert erstellen.

Wichtig

Fordern Sie Benutzer nach Möglichkeit auf, Sicherheitsanmeldeinformationen zur Laufzeit einzugeben. Wenn Anmeldeinformationen in einer Skriptdatei gespeichert werden müssen, muss die Datei an einem sicheren Ort gespeichert werden, um unberechtigten Zugriff zu vermeiden.

So erstellen Sie ein Pushabonnement für eine Transaktions- oder Momentaufnahmeveröffentlichung für einen Nicht-SQL Server-Abonnenten

  1. Installieren Sie den neuesten OLE DB-Anbieter für den Nicht-SQL Server-Abonnenten sowohl auf dem Verleger als auch auf dem Verteiler. Informationen zu den Replikationsanforderungen für einen OLE DB-Anbieter finden Sie unter Nicht-SQL Server-Abonnenten, Oracle-Abonnenten, IBM Db2-Abonnenten.

  2. Überprüfen Sie beim Verleger in der Veröffentlichungsdatenbank, ob die Veröffentlichung Nicht-SQL-Server-Abonnenten unterstützt, durch Ausführen von sp_helppublication (Transact-SQL).

    • Der Wert 1 für enabled_for_het_sub bedeutet, dass Nicht-SQL Server-Abonnenten unterstützt werden.

    • Wenn der Wert von enabled_for_het_sub 0 ist, führen Sie sp_changepublication (Transact-SQL) aus, und geben Sie enabled_for_het_sub für @property und true für @value an.

      Hinweis

      Bevor Sie enabled_for_het_sub zu trueändern, müssen Sie alle vorhandenen Abonnements für die Veröffentlichung löschen. Sie können enabled_for_het_sub nicht auf true festlegen, wenn die Veröffentlichung auch Abonnements mit Update unterstützt. Das Ändern von enabled_for_het_sub wirkt sich auf andere Eigenschaften der Veröffentlichung aus. Weitere Informationen finden Sie unter Non-SQL Server Subscribers.

  3. Führen Sie beim Verleger in der Veröffentlichungsdatenbank sp_addsubscription (Transact-SQL) aus. Geben Sie @publication, @subscriber, den Wert (default destination) für @destination_db, den Wert push für @subscription_type und den Wert 3 für @subscriber_type (gibt einen OLE DB-Anbieter an) an.

  4. Führen Sie beim Verleger in der Veröffentlichungsdatenbank sp_addpushsubscription_agent (Transact-SQL) aus. Geben Sie die folgenden Informationen an:

    • Die Parameter @subscriber und @publication.

    • Den Wert (Standardziel) für @subscriber_db.

    • Die Eigenschaften der Nicht-SQL Server-Datenquelle für @subscriber_provider, @subscriber_datasrc, @subscriber_location, @subscriber_provider_string, und @subscriber_catalog.

    • Die Microsoft Windows-Anmeldeinformationen, unter denen der Verteilungs-Agent beim Verteiler für @job_login und @job_passwordausgeführt wird.

    Hinweis

    Bei Verbindungen, die mit der integrierten Windows-Authentifizierung hergestellt werden, werden immer die von @job_login und @job_password angegebenen Windows-Anmeldeinformationen verwendet. Der Verteilungs-Agent stellt die lokale Verbindung mit dem Verteiler immer mithilfe der Windows-Authentifizierung her. Standardmäßig stellt der Agent mithilfe der integrierten Windows-Authentifizierung eine Verbindung mit dem Abonnenten her.

    • Den Wert 0 für @subscriber_security_mode und die Anmeldeinformationen des OLE DB-Anbieters für @subscriber_login und @subscriber_password.

    • Zeitplan für den Auftrag des Verteilungs-Agents für dieses Abonnement. Weitere Informationen finden Sie unter Angeben von Synchronisierungszeitplänen.

    Wichtig

    Beim Erstellen eines Pushabonnements auf einem Verleger mit einem Remoteverteiler werden die angegebenen Werte für alle Parameter, einschließlich job_login und job_password, an den Verteiler als Nur-Text gesendet. Sie sollten die Verbindung zwischen dem Verleger und dem zugehörigen Remoteverteiler verschlüsseln, bevor Sie diese gespeicherte Prozedur ausführen. Weitere Informationen finden Sie unter Aktivieren von verschlüsselten Verbindungen zur Datenbank-Engine (SQL Server-Konfigurations-Manager).