Montag, 17. Juli 2006
gbak-Probleme
bnreimer, 19:28h
Es ist ein bekanntes Problem, das gbak Probleme beim restaurieren von Rechten von Objekten hat, die zu lang sind. Zu lang bedeutet dabei, dass sie nicht länger als 27 Zeichen sein dürfen.
Hier eine kleine Prozedur, die Hinweise gibt, wo etwas zu lang ist. Da in den Meta-Tabellen leider CHAR-Felder sind, sind ein paar Routinen aus UDFs nötig.
SET TERM ^ ;
CREATE PROCEDURE "PROCSYS_DBCheckLong"
RETURNS (
Res VARCHAR(84),
Fld VARCHAR(60),
Typ CHAR(10))
AS
DECLARE VARIABLE Rn CHAR(31);
DECLARE VARIABLE Rf CHAR(31);
DECLARE VARIABLE Ruser CHAR(31);
DECLARE VARIABLE L BIGINT;
begin
FOR SELECT P.RDB$RELATION_NAME, P.RDB$FIELD_NAME, P.RDB$USER FROM RDB$USER_PRIVILEGES P
INTO :RN, :RF, :RUSER DO BEGIN
FLD = RTRIM(RN);
IF (Strlen(FLD) > 27) THEN BEGIN
RES = FLD || ' zu lang';
TYP = 'N';
suspend;
END
FLD= RTRIM(RF);
IF (Strlen(FLD) > 27) THEN BEGIN
RES = FLD || ' zu lang';
TYP = 'F';
suspend;
END
FLD= RTRIM(RUSER);
IF (Strlen(FLD) > 27) THEN BEGIN
RES = FLD || ' zu lang';
TYP = 'U';
suspend;
END
END
end^
SET TERM ; ^
DESCRIBE PROCEDURE "PROCSYS_DBCheckLong"
'Überprüft Struktur auf zu lange Konstrukte, die bei FB gbak Probleme beim
Restaurieren machen
Typ:
T: Table
F: Feld
U: User';
Falls jemand eine andere Idee hat, Hinweise willkommen!
Hier eine kleine Prozedur, die Hinweise gibt, wo etwas zu lang ist. Da in den Meta-Tabellen leider CHAR-Felder sind, sind ein paar Routinen aus UDFs nötig.
SET TERM ^ ;
CREATE PROCEDURE "PROCSYS_DBCheckLong"
RETURNS (
Res VARCHAR(84),
Fld VARCHAR(60),
Typ CHAR(10))
AS
DECLARE VARIABLE Rn CHAR(31);
DECLARE VARIABLE Rf CHAR(31);
DECLARE VARIABLE Ruser CHAR(31);
DECLARE VARIABLE L BIGINT;
begin
FOR SELECT P.RDB$RELATION_NAME, P.RDB$FIELD_NAME, P.RDB$USER FROM RDB$USER_PRIVILEGES P
INTO :RN, :RF, :RUSER DO BEGIN
FLD = RTRIM(RN);
IF (Strlen(FLD) > 27) THEN BEGIN
RES = FLD || ' zu lang';
TYP = 'N';
suspend;
END
FLD= RTRIM(RF);
IF (Strlen(FLD) > 27) THEN BEGIN
RES = FLD || ' zu lang';
TYP = 'F';
suspend;
END
FLD= RTRIM(RUSER);
IF (Strlen(FLD) > 27) THEN BEGIN
RES = FLD || ' zu lang';
TYP = 'U';
suspend;
END
END
end^
SET TERM ; ^
DESCRIBE PROCEDURE "PROCSYS_DBCheckLong"
'Überprüft Struktur auf zu lange Konstrukte, die bei FB gbak Probleme beim
Restaurieren machen
Typ:
T: Table
F: Feld
U: User';
Falls jemand eine andere Idee hat, Hinweise willkommen!
... comment