So migrieren (kopieren) Sie Benutzer von security2.fdb (Firebird 2.5) zu security3.fdb (Firebird 3.0)
Um Benutzerkonten (Namen, Passwörter usw.) von Firebird 2.5 security2.fdb nach security3.fdb in Firebird zu kopieren, kopieren Sie alle Datensätze von RDB$USERS (security2.fdb) nach PLG$USERS (security3.fdb).
Der einfachste Weg ist, security2.fdb unter Firebird 3 wiederherzustellen und sich dann über eine eingebettete Verbindung mit security3.fdb zu verbinden und das folgende SQL-Skript auszuführen (ändern Sie den Pfad zur wiederhergestellten security2.fdb von localhost:D:\fb\data\security2.fdb auf den tatsächlichen Pfad).
Dieses Skript verbindet sich mit der wiederhergestellten Datenbank aus 2.5 und kopiert alle Benutzerdaten in die security3.fdb. Wenn die Legacy-Autorisierung in der Firebird-3-Konfiguration aktiviert ist, können Sie sich mit denselben Anmeldedaten wie in 2.5 mit der Datenbank verbinden.
connect security.db user sysdba;
set term ^;
EXECUTE BLOCK
AS
DECLARE VARIABLE FRST VARCHAR(32);
DECLARE VARIABLE MDDL VARCHAR(32);
DECLARE VARIABLE LST VARCHAR(32);
DECLARE VARIABLE USR VARCHAR(128);
DECLARE VARIABLE PASSWD VARCHAR(64);
DECLARE VARIABLE ATTR VARCHAR(4096);
DECLARE VARIABLE UID INT;
DECLARE VARIABLE GID INT;
DECLARE VARIABLE SQL VARCHAR(4096);
BEGIN
FOR EXECUTE STATEMENT '
SELECT
RDB$USER_NAME,
RDB$PASSWD,
RDB$FIRST_NAME,
RDB$MIDDLE_NAME,
RDB$LAST_NAME,
RDB$UID,
RDB$GID
FROM
RDB$USERS
WHERE RDB$USER_NAME IS NOT NULL
AND UPPER(RDB$USER_NAME) != ''SYSDBA''
'
ON EXTERNAL DATA SOURCE 'localhost:D:\fb\data\security2.fdb'
AS USER 'SYSDBA' password 'masterkey'
INTO :USR,
:PASSWD,
:FRST,
:MDDL,
:LST,
:UID,
:GID
DO
BEGIN
SQL = '
INSERT INTO PLG$USERS(
PLG$USER_NAME,
PLG$PASSWD,
PLG$FIRST_NAME,
PLG$MIDDLE_NAME,
PLG$LAST_NAME,
PLG$UID,
PLG$GID)
VALUES(';
SQL = SQL || '''' || USR || '''';
SQL = SQL || ',''' || PASSWD || '''';
SQL = SQL || ',' || COALESCE('''' || FRST || '''', 'NULL');
SQL = SQL || ',' || COALESCE('''' || MDDL || '''', 'NULL');
SQL = SQL || ',' || COALESCE('''' || LST || '''', 'NULL');
SQL = SQL || ',' || COALESCE(UID, 'NULL');
SQL = SQL || ',' || COALESCE(GID, 'NULL');
SQL = SQL || ')';
EXECUTE STATEMENT SQL;
END
END^
set term ;^
commit;
exit;