Olá pessoal, tudo bem?
Fez alguma atualização do Windows e o Data Quality Services passou a apresentar algumas mensagens relacionadas ao .NET Framework? Então, não faça nenhuma maluquice, gambiarra, workaround que a internet lhe indicar, faça o que este artigo irá te ensinar, mas de maneira correta e simples!
A .NET Framework error occurred during execution of user-defined routine or aggregate “SetDataQualitySession”:
System.Data.SqlClient.SqlException: A .NET Framework error occurred during execution of user-defined routine or aggregate “SetDataQualitySessionPhaseTwo”:
System.TypeInitializationException: The type initializer for ‘Microsoft.Ssdqs.Core.Startup.ServerInit’ threw an exception. —> Microsoft.Ssdqs.Infra.Exceptions.ServerException: Failed to initialize configuration. —> System.IO.FileLoadException: Could not load file or assembly ‘System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ or one of its dependencies. Assembly in host store has a different signature than assembly in GAC. (Exception from HRESULT: 0x80131050) See Microsoft Knowledge Base article 949080 for more information.
Sintoma
Ao abrir o Data Quality Client você se depara com a mensagem de erro ao lado, também pode ocorrer durante a execução de algum pacote do Integration Services a mesma mensagem.
Isto provavelmente ocorre, pois o .NET foi atualizado de alguma forma e assim os assemblies que estavam registrados perderam a “referência”.
A própria Microsoft no tópico 4.23 do artigo a seguir indica um workarround: https://social.technet.microsoft.com/wiki/contents/articles/3711.microsoft-sql-server-code-named-denali-ctp3-release-notes.aspx
Sinceramente, não sei porque, pois eu encontrei na própria documentação uma maneira muito mais elegante de resolver isto, veja a seguir.
Resolução
O que deverá ser feito e rodar o comando para reinstalar o DQS, porém, será ignorada a fase de recriação dos bancos de dados, assim, ele fará apenas o upgrade das DLLs. Desta maneira, acesse o diretório de binários do SQL Server da sua Instância com problema:
- Abra o DOS como Administrador;
- Digite o comando abaixo:
cd “C:\Program Files\Microsoft SQL Server\MSSQLXYZ.SUAINSTANCIA\MSSQL\Binn” - Digite o seguinte comando:
DQSInstaller.exe -upgradedlls
Maiores detalhes sobre o DQSInstaller, leia em Executar o DQSInstaller.exe do prompt de comando ou Atualizar assemblies SQLCLR após atualizar o .NET Framework.
Espero que este artigo salve o seu dia, pois eu tive uma luz no fim do túnel, já que não admitia ter que fazer “gambiarras” para resolver este problema!
Dica final: Antes de fazer qualquer coisa, sempre leia a documentação da Microsoft, muitas vezes desprezada, ela na verdade sempre se mostra suficiente e completa!
Até breve.
Vithor da Silva e Silva | Consultor e Instrutor | SQL Server e Power BI
vithor@vssti.com.br