SQL Server 2008 Maître Ouvert une erreur de Clé sur le serveur physique de changement au cours de
J'ai copié une base de données SQL Server à partir d'un système à l'autre, une configuration identique, mais complètement différent de la machine physique. J'ai utilisé Norton Ghost et recoverd fichiers manuellement, par exemple, l'ensemble de SQL Server 2008 dossier trouvé dans c:\Program les Fichiers après ré-installation de SQL Server 2008 Express.
Une de mes bases de données a AES_256 le chiffrement est activé sur un certain nombre de l'un de ses tableaux, des colonnes. Je resetup mon IIS7 et essayé d'exécuter l'application à accéder à la base de données, lors de l'extraction de données, j'obtiens cette erreur:
Erreur de serveur dans l'Application'/'.
S'il vous plaît créer une clé principale dans la
la base de données ou d'ouvrir la clé principale dans la
session avant d'effectuer cette
le fonctionnement. Description: Un non gérée
exception s'est produite lors de la
l'exécution de la demande web actuelle.
Veuillez consulter la trace de la pile pour plus d'
informations sur l'erreur et où
il trouve son origine dans le code.Détails De L'Exception:
Système.Les données.SqlClient.SqlException:
S'il vous plaît créer une clé principale dans la
la base de données ou d'ouvrir la clé principale dans la
session avant d'effectuer cette
le fonctionnement.Source De L'Erreur:
Une exception non gérée s'est généré
au cours de l'exécution de la
demande web. Les informations concernant les
origine et l'emplacement de l'exception
peut être identifié à l'aide de l'exception
trace de la pile ci-dessous.
J'ai fait un peu de lecture et trouvé quelques liens sur la façon dont le chiffrement AES est lié avec la clé de l'ordinateur, mais je suis à une perte quant à la façon de le copier sur le nouveau système. Ou peut-être même n'est pas le cas.
NOTE: j'ai essayé de déposer la clé symétrique, de certificat et de la clé principale et de les recréer. Cela se débarrasser de l'erreur, mais que les données chiffrées via AES_256 ne s'affiche pas. Les colonnes qui ne sont PAS chiffrés, cependant.
Toute aide serait grandement appréciée. Merci à l'avance!
Vous devez vous connecter pour publier un commentaire.
La clé principale de base de données est cryptée à l'aide du serveur de clés maîtresses, qui est spécifique à l'ordinateur sur lequel SQL Server est installé. Lorsque vous déplacez la base de données vers un autre serveur, vous perdez la possibilité de décrypter et d'ouvrir la base de données de la clé principale raison du fait que le serveur de clés sera probablement différent. Si vous ne pouvez pas déchiffrer la clé principale de base de données, vous ne pouvez pas déchiffrer l'autre tout ce qui en dépend (certificats, clés symétriques, etc).
Fondamentalement, vous voulez re-crypter la clé principale de base de données à l'encontre de la nouvelle clé du serveur, ce qui peut être fait avec ce script (à l'aide des privilèges d'administrateur):
Notez que lorsque vous créez une base de données de la clé principale, vous devez toujours fournir un mot de passe en tant que bien de sorte que vous pouvez ouvrir la clé à l'aide du mot de passe dans le cas où la clé principale de service ne peut pas être utilisé - j'espère que vous avez que le mot de passe stocké quelque part!
Alternativement, vous pouvez restaurer une sauvegarde de la base de données master - clé, mais vous avez besoin d'un qui a été créé pour le serveur cible, pas le serveur source.
Si vous n'avez pas une sauvegarde ou un mot de passe, alors je ne suis pas sûr que vous serez en mesure de récupérer les données chiffrées sur le nouveau serveur, que vous devez supprimer et recréer la base de données de la clé maître avec un nouveau mot de passe, ce qui va tuer tout dépendant des clés et des données.
J'ai juste eu une situation similaire, un serveur à la reconstruction après les lecteurs du système d'exploitation est mort. J'ai réinstallé SQL et rebranche à tous mes vieux bases de données sur les zones intactes de lecteurs de données. Tout a fonctionné, sauf pour mes colonnes chiffrées. Mais mon problème est que le maître de la clé de service a été arrosé. J'ai pu réparer mon maître de clé de service par le retour à la même domaine d'identification qui avait été mon compte de service SQL server avant de le déplacer.
Ce l'article m'a donné le correctif (bravo à Matt Melon pour son excellent article). Je savais que la machine locale clé avait changé, mais mon salut était que je pouvais utiliser le même compte de service.
Service Clé principale: Au sommet de la hiérarchie des clés est la Clé principale du Service. Il y en a un par l'instance de SQL Server, il est une clé symétrique, et elle est stockée dans la base de données master. Utilisé pour chiffrer la Base de données Maître des Clés, Liés Serveur de mots de passe et les informations d'Identification il est généré au premier démarrage de SQL Server.
Il n'y a pas configurables par l'utilisateur mot de passe associé à cette clé – il est chiffré par le compte de service SQL Server et la machine locale clés. Au démarrage de SQL Server peut ouvrir la Clé principale du Service avec l'un de ces decryptions. Si l'un d'entre eux tombe en panne – SQL Server utilise l'autre et de "réparer" l'échec du déchiffrement (si les deux échouent – SQL Server error). C'est pour tenir compte de situations comme les clusters où la machine locale clé sera différent après un basculement. C'est aussi une des raisons pour lesquelles les comptes de service doit être modifié à l'aide de Gestionnaire de Configuration SQL Server – parce qu'alors, le Service de chiffrement de Clé principale est régénéré correctement.
http://mattsql.wordpress.com/2012/11/13/migrating-sql-server-databases-that-use-database-master-keys/