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.
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!