sql >> Database >  >> RDS >> Sqlserver

SQL Server 2008 Open Master Key-fout bij fysieke serverwisseling

De hoofdsleutel van de database wordt versleuteld met de hoofdsleutel van de server, die specifiek is voor de machine waarop SQL Server is geïnstalleerd. Wanneer u de database naar een andere server verplaatst, verliest u de mogelijkheid om de databasehoofdsleutel automatisch te decoderen en te openen, omdat de lokale serversleutel hoogstwaarschijnlijk anders zal zijn. Als u de hoofdsleutel van de database niet kunt ontsleutelen, kunt u ook niets anders ontsleutelen dat ervan afhangt (certificaten, symmetrische sleutels, enz.).

Kortom, u wilt de databasehoofdsleutel opnieuw versleutelen tegen de nieuwe serversleutel, wat u met dit script kunt doen (met beheerdersrechten):

-- Reset database master key for server (if database was restored from backups on another server)
OPEN MASTER KEY DECRYPTION BY PASSWORD = '---your database master key password---'
ALTER MASTER KEY ADD ENCRYPTION BY SERVICE MASTER KEY
GO

Houd er rekening mee dat wanneer u een databasehoofdsleutel maakt, u altijd ook een wachtwoord moet opgeven, zodat u de sleutel kunt openen met het wachtwoord in het scenario waarin de servicehoofdsleutel niet kan worden gebruikt - hopelijk heeft u dat wachtwoord ergens opgeslagen!

U kunt ook een back-up van de hoofdsleutel van de database terugzetten, maar u hebt er een nodig die voor de doelserver is gemaakt, niet voor de bronserver.

Als u geen back-up of wachtwoord hebt, weet ik niet zeker of u de versleutelde gegevens op de nieuwe server kunt herstellen, omdat u de hoofdsleutel van de database moet verwijderen en opnieuw moet maken met een nieuw wachtwoord. die alle afhankelijke sleutels en gegevens zal doden.



  1. Hoe van database wisselen in Postgres?

  2. Database-ontwerpconcepten met SQL Server Management Studio (SSMS) deel 1

  3. Is het mogelijk om in MySQL een kolom te maken met een expressie als standaardwaarde?

  4. Hoe psycopg2 te gebruiken om de waarde van een bepaalde sleutel op te halen uit een postgres-tabel die sleutel-waardeparen heeft