|
|
/* Script: ChangeDatabaseOwner.sql Schema: NONE Module: N.A. Author: Marco Bommeljé Date: 2000-09-22
Template script for changing ownership of a database from OLD_OWNER to NEW_OWNER.
DESCRIPTION This script updates Interbase system tables in order to hand over ownership of a database.
*/
CONNECT 'c:\projects\data\example.gdb' USER 'SYSDBA' PASSWORD 'masterkey';
/* Copy the DBO's privileges on RDB$ROLES to NEW_OWNER */ INSERT INTO rdb$user_privileges (rdb$user, rdb$grantor, rdb$privilege, rdb$grant_option, rdb$relation_name, rdb$field_name, rdb$user_type, rdb$object_type) SELECT 'NEW_OWNER', 'NEW_OWNER', rdb$privilege, rdb$grant_option, rdb$relation_name, rdb$field_name, rdb$user_type, rdb$object_type FROM rdb$user_privileges WHERE rdb$grantor = 'OLD_OWNER' AND rdb$user = 'OLD_OWNER' AND rdb$relation_name = 'RDB$ROLES' ;
/* Copy other users' privileges on RDB$ROLES with NEW_OWNER as grantor */ INSERT INTO rdb$user_privileges (rdb$user, rdb$grantor, rdb$privilege, rdb$grant_option, rdb$relation_name, rdb$field_name, rdb$user_type, rdb$object_type) SELECT rdb$user, 'NEW_OWNER', rdb$privilege, rdb$grant_option, rdb$relation_name, rdb$field_name, rdb$user_type, rdb$object_type FROM rdb$user_privileges WHERE rdb$grantor = 'OLD_OWNER' AND rdb$user <> 'OLD_OWNER' AND rdb$relation_name = 'RDB$ROLES';
/* Revoke DBO's privileges from RDB$ROLES */ DELETE FROM rdb$user_privileges WHERE rdb$grantor = 'OLD_OWNER' AND rdb$relation_name = 'RDB$ROLES';
/* Change ownership of catalog tables */ UPDATE rdb$relations SET rdb$owner_name = 'NEW_OWNER' WHERE rdb$relation_name LIKE 'RDB$%';
COMMIT; /* end of script */
|