Eu mudei a conta de serviço para o SQL Server 2005 Reporting Services várias vezes agora, mas ontem foi a primeira vez que eu encontrei o temido 'O servidor de relatório não pode descriptografar a chave simétrica usada para acessar ... 'erro.
O ambiente é o SQL Server 2005 Enterprise edition instalado como uma instância nomeada em uma caixa que também possui a edição do SQL Server 2000 Standard como padrão. Tudo é de 32 bits.
Como A BOL recomenda eu sempre uso o Reporting Services Configuration Manager para fazer a alteração e nunca precisei restaurar uma chave de criptografia.
No entanto, neste momento mais recente (teria que estar em produção, não seria?), a alteração da conta de serviço não conseguiu importar a chave de criptografia existente; do arquivo de log ReportServerService:
ReportingServicesService!crypto!b!5/19/2009-17:20:37::
i INFO: Initializing crypto as user:
\
ReportingServicesService!crypto!b!5/19/2009-17:20:37::
i INFO: Exporting public key
ReportingServicesService!crypto!b!5/19/2009-17:20:37::
i INFO: Performing sku validation
ReportingServicesService!crypto!b!5/19/2009-17:20:37::
i INFO: Importing existing encryption
key
ReportingServicesService!library!b!5/19/2009-17:20:37::
e ERROR: Throwing
Microsoft.ReportingServices.Diagnostics.Utilities.ReportServerDisabledException:
The report server cannot decrypt the
symmetric key used to access sensitive
or encrypted data in a report server
database. You must either restore a
backup key or delete all encrypted
content. Check the documentation for
more information., ; Info:
Microsoft.ReportingServices.Diagnostics.Utilities.ReportServerDisabledException:
The report server cannot decrypt the
symmetric key used to access sensitive
or encrypted data in a report server
database. You must either restore a
backup key or delete all encrypted
content. Check the documentation for
more information. --->
System.Runtime.InteropServices.COMException
(0x80090005): Bad Data. (Exception
from HRESULT: 0x80090005) at
System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32
errorCode, IntPtr errorInfo)
at
RSManagedCrypto.RSCrypto.ImportSymmetricKey(Byte[]
symKeyBlob) at
Microsoft.ReportingServices.Library.ConnectionManager.GetEncryptionKey()
--- End of inner exception stack trace ---
Agora, eu sou um bom DBA e tive um backup da chave de criptografia anterior disponível, então consegui me recuperar rapidamente do problema, mas o que eu quero saber é por que isso aconteceu? Este artigo do MS sugere que pode acontecer , mas eu não gosto da sugestão de que é uma ocorrência completamente aleatória. Eu tinha lido e agora infelizmente não consigo encontrar o link, uma sugestão de que isso ocorre regularmente quando você altera a conta de serviço do Reporting Services por outros meios além do RS Configuration Manager, como o SQL Server Configuration Manager ou o Windows Services.
Então, eu tenho duas perguntas:
- Por que isso aconteceria se eu estivesse usando o RS Configuration Manager, como recomendado? (Mas deu certo teste, ele exclama!)
- Devo ter dúvidas de que a minha chave de criptografia atual não é baseada na conta de serviço atual / automática como normalmente é, mas na conta de serviço anterior?