Erstellen Sie die Verzeichnisse, die benötigt werden, um die Datenbanken und deren Transaktionslogs zu speichern, sowie die Verzeichnisstruktur für die Nachrichten. Außerdem legen Sie das Schema der konsolidierten Datenbank fest, einschließlich der Erstellung des entfernten Benutzers sowie der Publikation und der Subskription, die für die Replikation der Daten benötigt werden.
Voraussetzungen
Sie müssen die SYS_REPLICATION_ADMIN_ROLE-Systemrolle haben.
Kontext und Bemerkungen
Wenn SQL Remote in der konsolidierten Datenbank ausgeführt wird, verwendet es das FILE-Nachrichtensystem, um Nachrichten zu senden und zu empfangen, aber die entfernte Datenbank verwendet das HTTP-Nachrichtensystem.
Für diese praktische Einführung lautet der Name des Computers, auf dem die konsolidierte Datenbank und damit der Nachrichtenserver läuft, machine_cons.
Erstellen Sie die folgenden Verzeichnisse für die konsolidierte Datenbank und die entfernte Datenbank:
Erstellen Sie die folgenden Verzeichnisse für die von der konsolidierten Datenbank und der entfernten Datenbank generierten Nachrichtendateien:
Führen Sie im Verzeichnis c:\tutorial\cons den folgenden Befehl aus, um die konsolidierte Datenbank (cons) zu erstellen:
dbinit -dba DBA,sql cons.db |
Starten Sie die konsolidierte Datenbank:
dbsrv16 -n cons c:\tutorial\cons\cons.db -xs http(port=8033) |
-xs http(8033) ist in der Befehlszeile erforderlich, da dieser Datenbankserver HTTP-Anforderungen aus der entfernten Datenbank akzeptiert und auf die Nachrichtendateien im Verzeichnis c:\tutorial\messages zugreift. Während beim Start des Datenbankservers keine Webdienste definiert sind, werden sie in der nächsten Lektion erstellt. In dieser Lektion starten Sie nur den Personal Datenbankserver, sodass nur SQL Remote Prozesse auf diesem Computer über HTTP mit dem Nachrichtenserver kommunizieren können. In einer Produktionsumgebung wird gewöhnlich der Netzwerkserver verwendet, sodass SQL Remote-Prozesse auf anderen Computern ebenfalls Zugriff auf die Webdienste haben. In dieser Lektion haben Sie einen Netzwerkserver gestartet und ihm den Namen "cons" gegeben. Wenn in Ihrem Netzwerk bereits ein anderer Datenbankserver mit diesem Namen läuft, müssen Sie einen anderen Namen für den Netzwerkserver wählen und die Verbindungszeichenfolgen im Rest dieser praktischen Einführung so ändern, dass der andere Name verwendet wird. Weitere Hinweise zur Verwendung der Option -xs finden Sie unter Datenbankserveroption -xs .
Verbinden Sie sich mit Interactive SQL mit der konsolidierten Datenbank (cons) als Benutzer mit der entsprechenden SYS_REPLICATION_ADMIN_ROLE-Systemrolle:
dbisql -c "UID=DBA;PWD=sql;SERVER=cons;DBN" |
Führen Sie die folgende Anweisung aus, um die globale Datenbank-ID für die konsolidierte Datenbank (cons) festzulegen (die benötigt wird, damit bei Verwendung des GLOBAL AUTOINCREMENT-Standardwerts für alle Datenbanken unterschiedliche Primärschlüssel gewählt werden):
SET OPTION public.global_database_id=0; |
Das Schema für die Datenbank in dieser praktischen Einführung besteht aus einer einzelnen Tabelle und alle Spalten und Zeilen aus der Tabelle werden für jeden entfernten Benutzer repliziert. Führen Sie die folgenden Anweisungen in der konsolidierten Datenbank (cons) aus, um die einzelne Tabelle in der Datenbank zu erstellen:
CREATE TABLE employees ( employee_id BIGINT NOT NULL DEFAULT GLOBAL AUTOINCREMENT(1000000) PRIMARY KEY, first_name VARCHAR(128) NOT NULL, last_name VARCHAR(128) NOT NULL, hire_date TIMESTAMP NOT NULL DEFAULT TIMESTAMP ); |
Führen Sie die folgenden Anweisungen in der konsolidierten Datenbank (cons) aus, um der employees-Tabelle Beispieldaten hinzuzufügen:
INSERT INTO employees (first_name, last_name) VALUES ('Kelly', 'Meloy'); INSERT INTO employees (first_name, last_name) VALUES ('Melisa', 'Boysen'); COMMIT; |
Führen Sie die folgende Anweisung in der konsolidierten Datenbank (cons) aus, um zu bestätigen, dass die Tabelle erstellt und mit Daten gefüllt wurde:
SELECT * FROM employees; |
Die Abfrage gibt die folgenden Daten aus der employees-Tabelle zurück, obwohl die hire_date-Spalte die Uhrzeit enthält, zu der Sie die Zeile eingefügt haben, und nicht die in der folgenden Tabelle aufgeführten Werte:
employee_id | first_name | last_name | hire_date |
---|---|---|---|
1 | Kelly | Meloy | 2011-03-25 08:27:56.310 |
2 | Melisa | Boysen | 2011-03-25 08:27:56.310 |
In dieser praktischen Einführung werden dem Publikationseigentümer und dem entfernten Benutzer Kennwörter zugeordnet, da die konsolidierte Datenbank als Nachrichtenserver für das HTTP-Nachrichtensystem fungiert. Führen Sie die folgende Anweisung aus, um den Benutzer cons mit den Privilegien CONNECT und PUBLISH zu erstellen:
GRANT CONNECT TO cons; GRANT PUBLISH TO cons; |
Aus Gründen der Performance kann das HTTP-Nachrichtensystem nur in der entfernten Datenbank verwendet werden und nicht in der konsolidierten Datenbank. Die folgenden Anweisungen konfigurieren die Verwendung des FILE-basierten Nachrichtensystems in der konsolidierten Datenbank:
CREATE REMOTE MESSAGE TYPE FILE ADDRESS 'cons'; SET REMOTE FILE OPTION public.directory='c:\\tutorial\\messages'; SET REMOTE FILE OPTION public.debug='yes'; |
Führen Sie die folgenden Anweisungen aus, um den entfernten Benutzer rem ohne Kennwort zu erstellen und ihm REMOTE-Privilegien zu erteilen, während Sie die Adresse des Benutzers im FILE-Nachrichtensystem festlegen:
GRANT CONNECT TO rem IDENTIFIED BY rem; GRANT REMOTE TO rem TYPE FILE ADDRESS 'rem'; |
Eine Publikation beschreibt die Datenmenge, die repliziert werden soll. Erstellen Sie eine Publikation namens pub_employees, die alle Zeilen der employees-Tabelle repliziert. Sie subskribieren einen Benutzer für eine Publikation, indem Sie eine Subskription erstellen.
CREATE PUBLICATION pub_employees ( TABLE employees ); CREATE SUBSCRIPTION TO pub_employees FOR rem; |
Trennen Sie die Verbindung zu Interactive SQL.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |