Hi – I have another question re user mapping…
If I create a new database with a user->role mapping, I can back up and restore
it and the mapping is still present.
But if I back up the new copy and restore that, the mapping is gone… is there
an issue with the procedure I'm using or is this a bug?
(for context, we have Firebird databases here that have inherited a regular
backup/restore cycle from when we were using InterBase 5 or 6… apparently they
had a tendency to slow down if not refreshed this way, but that is from before
my time!)
Here's a demonstration using Firebird 3.0.5:
1. Create database with mapping
PS C:\Users\PGMRSD1> c:\apps\firebird\isql.exe
Use CONNECT or CREATE DATABASE to specify a database
SQL> create role foo;
SQL> create mapping sjd_foo using plugin win_sspi from user "foodstuff\pgmrsd1"
to role foo;
SQL> exit;
2. Check mapping
PS C:\Users\PGMRSD1> c:\apps\firebird\isql.exe
C:\temp\mapping-backup-restore\FOO.FDB
Database: C:\temp\mapping-backup-restore\FOO.FDB, User: PGMRSD1
SQL> show users;
Users in the database
1 #PGMRSD1
SQL> show roles;
FOO
SQL> show mapping;
SJD_FOO USING PLUGIN WIN_SSPI FROM USER foodstuff\pgmrsd1 TO ROLE FOO
*** Global mapping ***
TRUSTED_AUTH USING PLUGIN WIN_SSPI FROM ANY USER TO USER
SQL> exit;
3. Back up database – verbose output shows mapping saved
PS C:\Users\PGMRSD1> c:\apps\firebird\gbak.exe -v -stat tdrw -b
C:\temp\mapping-backup-restore\FOO.FDB
C:\temp\mapping-backup-restore\FOO.FDB.bak
gbak: time delta reads writes
gbak: 0.104 0.104 40 0 readied database
C:\temp\mapping-backup-restore\FOO.FDB for backup
gbak: 0.107 0.002 0 0 creating file
C:\temp\mapping-backup-restore\FOO.FDB.bak
gbak: 0.112 0.004 0 0 starting transaction
gbak: 0.115 0.003 21 1 database
C:\temp\mapping-backup-restore\FOO.FDB has a page size of 8192 bytes.
gbak: 0.118 0.003 0 0 writing domains
gbak: 0.122 0.003 6 0 writing shadow files
gbak: 0.123 0.001 0 0 writing character sets
gbak: 0.125 0.001 0 0 writing collations
gbak: 0.127 0.001 1 0 writing tables
gbak: 0.128 0.001 0 0 writing types
gbak: 0.131 0.002 5 0 writing filters
gbak: 0.132 0.001 2 0 writing id generators
gbak: 0.134 0.001 3 0 writing exceptions
gbak: 0.135 0.001 2 0 writing functions
gbak: 0.137 0.001 2 0 writing stored procedures
gbak: 0.139 0.002 2 0 writing packages
gbak: 0.141 0.001 2 0 writing triggers
gbak: 0.143 0.002 0 0 writing trigger messages
gbak: 0.145 0.002 12 0 writing security classes
gbak: 0.148 0.002 2 0 writing table constraints
gbak: 0.150 0.002 0 0 writing referential constraints
gbak: 0.152 0.002 1 0 writing check constraints
gbak: 0.154 0.001 0 0 writing SQL roles
gbak: 0.155 0.001 0 0 writing SQL role: FOO
gbak: 0.157 0.002 0 0 writing names mapping
gbak: 0.159 0.001 3 0 writing map for SJD_FOO
gbak: 0.199 0.002 104 1 total statistics
4. Restore database – verbose output shows mapping preserved
PS C:\Users\PGMRSD1> c:\apps\firebird\gbak.exe -v -stat tdrw -c
C:\temp\mapping-backup-restore\FOO.FDB.bak
C:\temp\mapping-backup-restore\BAR.FDB
gbak: time delta reads writes
gbak: 0.004 0.004 0 0 opened file
C:\temp\mapping-backup-restore\FOO.FDB.bak
gbak: 0.219 0.214 0 0 transportable backup -- data in XDR format
gbak: 0.222 0.002 0 0 backup file is compressed
gbak: 0.224 0.001 0 0 backup version is 10
gbak: 0.362 0.137 0 666 created database
C:\temp\mapping-backup-restore\BAR.FDB, page_size 8192 bytes
gbak: 0.365 0.003 0 2 started transaction
gbak: 0.366 0.001 0 0 restoring SQL role: FOO
gbak: 0.368 0.001 0 0 restoring names mapping
gbak: 0.370 0.002 0 0 restoring map for SJD_FOO
gbak: 0.375 0.004 0 13 creating indexes
gbak: 0.402 0.027 0 34 committing metadata
gbak: 0.404 0.002 0 10 fixing views dbkey length
gbak: 0.407 0.002 0 0 updating ownership of packages, procedures
and tables
gbak: 0.409 0.002 0 0 adding missing privileges
gbak: 0.411 0.002 0 0 adjusting system generators
gbak: 0.418 0.006 0 3 finishing, closing, and going home
gbak: 0.421 0.002 0 728 total statistics
gbak:adjusting the ONLINE and FORCED WRITES flags
5. Confirm mapping present in restored database
PS C:\Users\PGMRSD1> c:\apps\firebird\isql.exe
C:\temp\mapping-backup-restore\BAR.FDB
Database: C:\temp\mapping-backup-restore\BAR.FDB, User: PGMRSD1
SQL> show users;
Users in the database
1 #PGMRSD1
SQL> show roles;
FOO
SQL> show mapping;
SJD_FOO USING PLUGIN WIN_SSPI FROM USER foodstuff\pgmrsd1 TO ROLE FOO
*** Global mapping ***
TRUSTED_AUTH USING PLUGIN WIN_SSPI FROM ANY USER TO USER
SQL> exit;
6. Back up database – verbose output does not show mapping
PS C:\Users\PGMRSD1> c:\apps\firebird\gbak.exe -v -stat tdrw -b
C:\temp\mapping-backup-restore\BAR.FDB
C:\temp\mapping-backup-restore\BAR.FDB.bak
gbak: time delta reads writes
gbak: 0.124 0.124 40 0 readied database
C:\temp\mapping-backup-restore\BAR.FDB for backup
gbak: 0.126 0.002 0 0 creating file
C:\temp\mapping-backup-restore\BAR.FDB.bak
gbak: 0.130 0.003 0 0 starting transaction
gbak: 0.133 0.003 21 1 database
C:\temp\mapping-backup-restore\BAR.FDB has a page size of 8192 bytes.
gbak: 0.135 0.002 0 0 writing domains
gbak: 0.137 0.002 6 0 writing shadow files
gbak: 0.141 0.003 0 0 writing character sets
gbak: 0.143 0.002 0 0 writing collations
gbak: 0.145 0.002 1 0 writing tables
gbak: 0.147 0.001 0 0 writing types
gbak: 0.150 0.002 5 0 writing filters
gbak: 0.152 0.001 2 0 writing id generators
gbak: 0.153 0.001 3 0 writing exceptions
gbak: 0.155 0.001 2 0 writing functions
gbak: 0.156 0.001 2 0 writing stored procedures
gbak: 0.159 0.002 2 0 writing packages
gbak: 0.160 0.001 2 0 writing triggers
gbak: 0.162 0.001 0 0 writing trigger messages
gbak: 0.165 0.002 12 0 writing security classes
gbak: 0.168 0.003 2 0 writing table constraints
gbak: 0.170 0.002 0 0 writing referential constraints
gbak: 0.172 0.001 1 0 writing check constraints
gbak: 0.174 0.001 0 0 writing SQL roles
gbak: 0.175 0.001 0 0 writing SQL role: FOO
gbak: 0.177 0.002 0 0 writing names mapping
gbak: 0.218 0.041 3 0 closing file, committing, and finishing.
512 bytes written
gbak: 0.221 0.002 104 1 total statistics
7. Restore database – verbose output does not show mapping
PS C:\Users\PGMRSD1> c:\apps\firebird\gbak.exe -v -stat tdrw -c
C:\temp\mapping-backup-restore\BAR.FDB.bak
C:\temp\mapping-backup-restore\BAZ.FDB
gbak: time delta reads writes
gbak: 0.005 0.005 0 0 opened file
C:\temp\mapping-backup-restore\BAR.FDB.bak
gbak: 0.072 0.067 0 0 transportable backup -- data in XDR format
gbak: 0.074 0.001 0 0 backup file is compressed
gbak: 0.076 0.001 0 0 backup version is 10
gbak: 0.196 0.120 0 666 created database
C:\temp\mapping-backup-restore\BAZ.FDB, page_size 8192 bytes
gbak: 0.200 0.003 0 2 started transaction
gbak: 0.202 0.002 0 0 restoring SQL role: FOO
gbak: 0.208 0.005 0 9 creating indexes
gbak: 0.234 0.026 0 34 committing metadata
gbak: 0.237 0.002 0 10 fixing views dbkey length
gbak: 0.238 0.001 0 0 updating ownership of packages, procedures
and tables
gbak: 0.240 0.001 0 0 adding missing privileges
gbak: 0.242 0.001 0 0 adjusting system generators
gbak: 0.247 0.005 0 3 finishing, closing, and going home
gbak: 0.249 0.001 0 724 total statistics
gbak:adjusting the ONLINE and FORCED WRITES flags
8. Confirm mapping not present in restored database
PS C:\Users\PGMRSD1> c:\apps\firebird\isql.exe
C:\temp\mapping-backup-restore\BAZ.FDB
Database: C:\temp\mapping-backup-restore\BAZ.FDB, User: PGMRSD1
SQL> show users;
Users in the database
1 #PGMRSD1
SQL> show roles;
FOO
SQL> show mapping;
*** Global mapping ***
TRUSTED_AUTH USING PLUGIN WIN_SSPI FROM ANY USER TO USER
SQL> exit;
------------------------------------------------------------------------------------------------------------------------
Note:
This e-mail message has been inspected for malicious content.
Attention:
The information contained in this message and or attachments is intended only
for the person
or entity to which it is addressed and may contain confidential and/or
privileged material. Any
review, retransmission, dissemination or other use of, or taking of any action
in reliance upon,
this information by persons or entities other than the intended recipient is
prohibited. If you
received this in error, please contact the sender and delete the material from
any system and
destroy any copies.
Please note that the views and opinions expressed in this message may be those
of the
individual and not necessarily those of Foodstuffs South Island Ltd.
Thank you.
------------------------------------------------------------------------------------------------------------------------