Restauration d'un SQL serveur à l'aveugle

Problématique

Vous recevez un fichier 'BAK' d'un serveur SQL que vous devez analyser... mais vous n'avez pas accès à la DB originale ou les informations sont parcélaires... Le restore sur un docker devient donc plus compliqué

sudo docker exec -it ${DOCKER_IMAGE_NAME} /opt/mssql-tools/bin/sqlcmd -S localhost  \
       -U SA -P ${MSSQL_SA_PASSWORD}                                                \
       -Q "RESTORE DATABASE ${DB_NAME} FROM DISK = N'/tmp/${LAST_BACK_UP_FILENAME}' WITH FILE = 1, MOVE N'XXXYY' TO N'/var/opt/mssql/data/${DB_NAME}.MDF', MOVE N'XXXYYLog' TO N'/var/opt/mssql/data/${DB_NAME}_log.ldf', NOUNLOAD, STATS = 5"

Cela donne alors ...

Msg 3234, Level 16, State 2, Server 06df989110e5, Line 1
Logical file '<CUSTOMER_DATABASE_FILES_NAME>' is not part of database '<CUSTOMER_DATABASE_NAME>'. Use RESTORE FILELISTONLY to list the logical file names.
Msg 3013, Level 16, State 1, Server 06df989110e5, Line 1
RESTORE DATABASE is terminating abnormally.

Identification des fichiers contenu

sudo docker exec  -it <Instance_name> bash 
mssql@3ec8842b24e7:/$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P <Secret_Password> -Q "RESTORE filelistonly from disk='/tmp/<Customer_name>_backup_2021_02_20_003004_7246086.bak'"

LogicalName                                                                                                                      PhysicalName                                                                                                                                                                                                                                                         Type FileGroupName                                                                                                                    Size                 MaxSize              FileId               CreateLSN                   DropLSN                     UniqueId                             ReadOnlyLSN                 ReadWriteLSN                BackupSizeInBytes    SourceBlockSize FileGroupId LogGroupGUID                         DifferentialBaseLSN         DifferentialBaseGUID                 IsReadOnly IsPresent TDEThumbprint                              SnapshotUrl                                                                                                                                                                                                                                                                                                                                     
-------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---- -------------------------------------------------------------------------------------------------------------------------------- -------------------- -------------------- -------------------- --------------------------- --------------------------- ------------------------------------ --------------------------- --------------------------- -------------------- --------------- ----------- ------------------------------------ --------------------------- ------------------------------------ ---------- --------- ------------------------------------------ ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<Database_1>                                                                                                            E:\Databases\MDF\<Database_1_filename>.mdf                                                                                                                                                                                                                           D    PRIMARY                                                                                                                                   13904379904       35184372080640                    1                           0                           0 40B7FA92-06FF-4241-A385-3A9055436C68                           0                           0          13813088256             512           1 NULL                                        75912000002240900062 528605BE-B3EC-4B4F-988D-3E57297DA0E6          0         1 NULL                                       NULL                                                                                                                                                                                                                                                                                                                                            
<Database_1_Log>                                                                                                        E:\Databases\LDF\Database_1_log_filename>.LDF                                                                                                                                                                                                                       L    NULL                                                                                                                                        717488128        2199023255552                    2                           0                           0 0673189D-C571-4A3F-83F1-74B5FAFA0F1A                           0                           0                    0             512           0 NULL                                                           0 00000000-0000-0000-0000-000000000000          0         1 NULL                                       NULL                                                                                                                                                                                                                                                                                                                                            

(2 rows affected)

Cela bloque encore dans certains occasions ...

Cela fera l'object d'un autre Blog post!

Références

  1. Microsot solution.
  2. Plus d'information de la part de Microsoft sur le Backup & Restore.
  3. Une excellente référence chez https://www.mssqltips.com.