meta données pour cette page
  •  

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
sql_server:tde:refresh_restore_bdd_encryptee [10/12/2023 19:30] mdlsql_server:tde:refresh_restore_bdd_encryptee [10/12/2023 19:49] (Version actuelle) mdl
Ligne 2: Ligne 2:
  
  
-=== 1. Prérequis / prerequisites ===+=== Prérequis ===
  
 Si on fait un restore sur le même environnent que le backup, cette étape n'est pas nécessaire Si on fait un restore sur le même environnent que le backup, cette étape n'est pas nécessaire
-Importer les certificats d'origine (PROD en général) .cert et . key sur le serveur de destination  +Importer les certificats d'origine (PROD en général) .cert et . key sur le serveur de destination . 
- +\\ 
-=== 2. Importer le certificat dans l'instance de destination === +=== 1. Importer le certificat dans l'instance de destination ===
 <code TSQL> <code TSQL>
  CREATE CERTIFICATE "FR0-VSIAAS-7003_INWP1Z81_TDECertificate"  CREATE CERTIFICATE "FR0-VSIAAS-7003_INWP1Z81_TDECertificate"
Ligne 16: Ligne 15:
 </code>  </code>
  
-== contenu du backup ==+  * vérification du  contenu du backup
  <code TSQL>  <code TSQL>
  RESTORE FILELISTONLY FROM DISK = 'C:\AdventureWorks.BAK'  RESTORE FILELISTONLY FROM DISK = 'C:\AdventureWorks.BAK'
  GO  GO
-</code>  +</code> 
-=== 2. Restore === +\\  
-== localisation des datafile de la DB de destination ==  +
-  +
- SELECT +
- db.name AS DBName, +
- type_desc AS FileType, +
- Physical_Name AS Location +
- FROM +
- sys.master_files mf +
- INNER JOIN  +
- sys.databases db ON db.database_id = mf.database_id+
  
---- RESTORATION, SQL SERVER sait que le backup est crypté, il va utiliser le certificat précédemment importé +=== 2. Restore === 
--- RESTORE, SQL SERVER knows that the backup is encrypted, hence he will use the certificate previoulsy imported+  * localisation des datafile de la DB de destination 
 +<code TSQL> 
 +SELECT 
 + db.name AS DBName, 
 + type_desc AS FileType, 
 + Physical_Name AS Location 
 + FROM sys.master_files mf 
 + INNER JOIN  sys.databases db ON db.database_id = mf.database_id 
 +</code> 
 + 
 +  * RESTORATION, SQL SERVER sait que le backup est crypté, il va utiliser le certificat précédemment importé 
 +<code TSQL>
  USE master;  USE master;
  GO  GO
Ligne 41: Ligne 42:
  WITH ROLLBACK IMMEDIATE;  WITH ROLLBACK IMMEDIATE;
  GO  GO
 +</code>
  
- RESTORE DATABASE [DBWQ1Z81] FROM  DISK = N'F:\Local\BackupSQL\INWQ1Z81\Backup\DBWP1Z81_full_CHG000299572_WO0000002342881.Bak' WITH  FILE = 1,  +<code TSQL> 
 +RESTORE DATABASE [DBWQ1Z81] FROM  DISK = N'F:\Local\BackupSQL\INWQ1Z81\Backup\DBWP1Z81_full_CHG000299572_WO0000002342881.Bak' WITH  FILE = 1,  
  MOVE N'DBWP1Z81' TO N'E:\Local\SQLServer\Data\INWQ1Z81\DBWQ1Z81.mdf',    MOVE N'DBWP1Z81' TO N'E:\Local\SQLServer\Data\INWQ1Z81\DBWQ1Z81.mdf',  
  MOVE N'DBWP1Z81_2' TO N'E:\Local\SQLServer\Data\INWQ1Z81\DBWQ1Z81_2.ndf',    MOVE N'DBWP1Z81_2' TO N'E:\Local\SQLServer\Data\INWQ1Z81\DBWQ1Z81_2.ndf',  
Ligne 53: Ligne 56:
  REPLACE,  STATS = 2  REPLACE,  STATS = 2
  GO  GO
 +</code>
  
- -- renommage des noms logiques des datafile de la DB +  * renommage des noms logiques des datafile de la DB 
- -- renaming of the logical name of the DB datafiles+<code TSQL>
  ALTER DATABASE [DBWQ1Z81] MODIFY FILE (NAME=N'DBWP1Z81', NEWNAME=N'DBWQ1Z81')  ALTER DATABASE [DBWQ1Z81] MODIFY FILE (NAME=N'DBWP1Z81', NEWNAME=N'DBWQ1Z81')
  ALTER DATABASE [DBWQ1Z81] MODIFY FILE (NAME=N'DBWP1Z81_2', NEWNAME=N'DBWQ1Z81_2')  ALTER DATABASE [DBWQ1Z81] MODIFY FILE (NAME=N'DBWP1Z81_2', NEWNAME=N'DBWQ1Z81_2')
Ligne 64: Ligne 68:
  ALTER DATABASE [DBWQ1Z81] MODIFY FILE (NAME=N'DBWP1Z81_7', NEWNAME=N'DBWQ1Z81_7')  ALTER DATABASE [DBWQ1Z81] MODIFY FILE (NAME=N'DBWP1Z81_7', NEWNAME=N'DBWQ1Z81_7')
  ALTER DATABASE [DBWQ1Z81] MODIFY FILE (NAME=N'DBWP1Z81_log', NEWNAME=N'DBWQ1Z81_log')  ALTER DATABASE [DBWQ1Z81] MODIFY FILE (NAME=N'DBWP1Z81_log', NEWNAME=N'DBWQ1Z81_log')
- +</code> 
 +  * On repasse la BDD en multi user donc ouverte au service 
 +<code TSQL>
  ALTER DATABASE [DBWQ1Z81]  ALTER DATABASE [DBWQ1Z81]
  SET MULTI_USER  SET MULTI_USER
  GO  GO
 +</code>
  
- 3. Correction du certificat en relation avec son environnement / fixing the certificate within its environment+====  3. Correction du certificat en relation avec son environnement ==== 
 +  
 +La base étant restorée, elle n'est plus encryptée avec le certificat de l'instance de destination, il faut donc le changer
  
- La base restorée, elle n'est plus encryptée avec le certificat de l'instance de destination, il faut donc le changer +  * Trouver le nom du certificat 
-The DB being restore, it is not anymore encrypted with the destination instance certificate, so we need to change it + <code TSQL>
- +
--- Trouver le nom du certificat +
--- Find the correct certificate+
 select * from sys.certificates select * from sys.certificates
 +</code>
  
--- Assignation du bon certificat + 
--- Assign the correct certificate+  * Assignation du bon certificat 
 +<code TSQL>
  use [xxx]  use [xxx]
  GO  GO
Ligne 91: Ligne 98:
  ALTER DATABASE DBWQ1Z81 SET ENCRYPTION ON  ALTER DATABASE DBWQ1Z81 SET ENCRYPTION ON
  GO  GO
 +</code>
 L'encryption va donc être relancée L'encryption va donc être relancée
-Encryption will be therefore relaunched 
  
--- Vérification du statut d'encryption 
--- Check of the status of the encryption 
  
 +  * Vérification du statut d'encryption
 +<code TSQL>
 -- 0 = No database encryption key present, no encryption  -- 0 = No database encryption key present, no encryption 
 -- 1 = Unencrypted  -- 1 = Unencrypted 
Ligne 118: Ligne 124:
  WHEN 5 THEN 'Decryption in progress'  WHEN 5 THEN 'Decryption in progress'
  WHEN 6 THEN 'Protection change in progress (The certificate or asymmetric key that is encrypting the database encryption key is being changed.)'  WHEN 6 THEN 'Protection change in progress (The certificate or asymmetric key that is encrypting the database encryption key is being changed.)'
- 
  END AS DescriptionState ,  END AS DescriptionState ,
 dek.key_algorithm AS Algorithm , dek.key_algorithm AS Algorithm ,
Ligne 128: Ligne 133:
 INNER JOIN sys.certificates c ON dek.encryptor_thumbprint = c.thumbprint INNER JOIN sys.certificates c ON dek.encryptor_thumbprint = c.thumbprint
 GO  GO 
 +</code>