System Center Configuration Manager x SQL Server Reporting Services x WMI

Esses dias passei por uma situação “interessante” que gostaria de compartilhar.

Estamos implementando o System Center Configuration Manager 2012 e entre as funcionalidades do mesmo há o Reporting Point, serviço de relatórios do mesmo, que se integra ao SQL Server Reporting Services (SSRS). Até a versão anterior do SCCM você tinha a opção de utilizar um serviço próprio de relatórios, mas a partir da versão 2012 você tem de utilizar o SSRS para tal serviço.

O processo de instalação do Reporting Point é bastante simples, mas no momento de selecionar a instância do SSRS onde serão hospedados os relatórios

Definindo a instância do SSRS

você pode enfrentar um problema onde não são listadas as instâncias.

Na tela acima, vemos listada a instância padrão “MSSQLSERVER” do SSRS, mas é comum enfrentar o problema onde essa caixa fica cinza/indisponível.

Nesse momento você se pergunta “… mas eu tenho instâncias do SSRS disponíveis, por que o instalador não lista as mesmas?”.

Podemos começar a análise com o texto disponível em um artigo do technet que fala sobre a instalação do Reporting Point, onde vemos o texto:

System Center 2012 Configuration Manager makes a connection in the context of the current user to Windows Management Instrumentation (WMI) on the selected site system to retrieve the instance of SQL Server for Reporting Services. The current user must have Read access to WMI on the site system, or the Reporting Services instances cannot be retrieved.

Aqui vemos que a listagem das instâncias depende de uma consulta WMI, o que abre as possibilidades de problemas para várias, podendo ser algo relacionado ao serviço do WMI, permissões, etc.

O primeiro passo seria verificar que o serviço de WMI está sendo executado na máquina local onde o instalador. Para tal, você pode seguir o procedimento abaixo:

  1. Clique em iniciar -> Executar -> digite wbemtest -> ENTER
  2. Clique em “Connect…”, digite “root\Microsoft\SqlServer\ComputerManagement11” e clique em “Connect”***
  3. Clique em “Query”, digite “SELECT * FROM ServerSettings” e clique em “Apply”

Para verificar o funcionamento do serviço na máquina que hospeda o SSRS você pode fazer o procedimento abaixo:

  1. Clique em iniciar -> Executar -> digite wbemtest -> ENTER
  2. Clique em “Connect…”, digite “\\nome_da_maquina_do_SSRS\root\Microsoft\SqlServer\reportserver” e clique em “Connect”*
  3. Clique em “Query”, digite “SELECT * __namespace” e clique em “Apply”

Se a consulta falhar com um erro igual ou parecido a “0×80041010, Invalid Class”, então você provavelmente tem um problema com o serviço do WMI.

***o valor 11 pode ser outro, dependendo da versão do SQL Server (11 = SQL Server 2012).

Nesse caso, o problema pode estar relacionado ao registro de DLLs ou de configuração do provider de WMI.

Para registrar as DLLs relacionadas ao WMI, você pode usar o executável REGSVR32, no formato: REGSVR32 nome_da_dll.

As DLLs que podem necessitar de registro são:

  • C:\Program Files (x86)\Microsoft SQL Server\100\Shared\reportingserviceswmiprovider.dll
  • C:\Program Files (x86)\Microsoft SQL Server\100\Shared\sqlmgmprovider.dll

Caso esse não seja o problema, você pode seguir o procedimento listado nesse link, que registra alguns namespaces WMI e outras tarefas.

Registrando namespaces WMI

Caso você queira verificar as permissões do WMI, basta seguir o processo descrito aqui, ou de forma mais didática aqui.

Considerando que eliminamos todos os possíveis problemas relacionados a WMI, podemos começar a desconfiar que o problema é relacionado ao System Center.

Pesquisando na internet achei esse artigo bem interessante. Ele referencia esse artigo do technet que afirma que

“When you install a SQL Reporting Services Point, Configuration Manager 2007 queries Windows Management Instrumentation (WMI) for installed instances of SQL Reporting Services. The report folder is installed on the first instance of SQL Reporting Services found by the WMI query. If you have installed multiple instances of SQL Reporting Services and are unsure about whether the instance on which you want to install the report folder is the first stored in WMI, it is recommended that you install the SQL Reporting Services Point on a computer running only one instance of SQL Reporting Services.”

Apesar de referenciar o SCCM 2007, serve também para o 2012. Aqui ele fala a instalação é feita na primeira instância listada pela consulta WMI feita pelo SCCM. Ai novamente pensamos “..mas eu tenho instâncias SSRS e ele não lista nenhuma”. De qualquer forma, essa informação será importante mais adiante.

Ainda nesse artigo ele demonstra que consultou uma .dll do SCCM e descobriu qual a consulta WMI é realizada.

Consulta WMI dentro da dll

A consulta seria “select * from MSReportServer_Instance

Consultando as instâncias do SSRS

no namespace “\\maquina_do_SSRS\root\Microsoft\sqlserver\reportserver\rs_mssqlserver\v10“, onde v10 seria no caso de instâncias SQL Server 2008 R2, já que instâncias SQL Server 2012 ainda não são suportadas no SCCM 2012, só no 2007.

Namespace consultado

Essa consulta pode não parecer nada demais, mas ela nos dá uma ajuda muito importante, pois mostra que a consulta WMI é feita na instância PADRÃO do sql server (MSSQLSERVER).

No artigo ele ainda cita algumas chaves de registro que são acessadas para listar as informações nessa consulta WMI, sendo elas no caminho “HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\“. Isso também será importante mais adiante.

Chaves de registro consultadas

Nesse ponto o que eu percebi foi que se você NÃO tiver uma instância padrão, o namespace onde o SCCM faz a pesquisa para listar as instâncias NÃO vai funcionar. Isso mesmo, você DEVE ter uma instância PADRÃO (default) do SSRS para que a consulta funcione.

Obs (adicionado em 23/05/2012): aqui vale uma ressalva, essa “exigência” por uma instância padrão parece ser apenas quando temos mais de uma instância do SSRS. Em um ambiente com apenas uma instância nomeada do SSRS, o Reporting Point listou normalmente a instância do SSRS.

Aqui então você tem duas opções. Uma seria instalar uma instância padrão do SSRS e continuar com a instalação. A outra seria tentar “enganar” o SCCM e fazê-lo pensar que há uma instância padrão do SSRS.

Você pode perguntar o motivo de eu querer tentar enganar o SCCM, e em um artigo futuro vou falar sobre uma situação onde você pode não ter como instalar uma instância padrão do SSRS e como contornar isso, dai essa vontade.

Bem, considerando que então você instalou uma instância padrão do SSRS (ou que você já tinha uma instância padrão do SSRS junto com outras instâncias nomeadas do mesmo), você pode pensar “agora posso continuar a instalação!”, e a resposta é, DEPENDE.

Lembram do texto que citei um pouco antes nesse artigo, vou destacar uma parte dele novamente

The report folder is installed on the first instance of SQL Reporting Services found by the WMI query

A consulta WMI irá listar APENAS a PRIMEIRA instância do SSRS encontrada e, caso essa não seja a instância onde você deseja instalar os relatórios do SCCM, você não terá como selecionar a instância correta.

Listagem das instâncias do SSRS

Ainda no artigo ele menciona que a ordem da listagem é definida por chaves no registro dentro do caminho (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\RS) e que, para alterar a ordem de listagem, basta você apagar e recriar a chave da instância que está sendo selecionada pelo SCCM, fazendo com que essa vá para o final da lista e a que vem em seguida passe a ser a primeira.

Com isso você já deve ter a instância desejada listada na instalação do SCCM e pode prosseguir com a instalação do mesmo.

Depois vou escrever outro post falando de como eu tentei “enganar” o SCCM e fazê-lo pensar que a instância padrão existe, caso você não queira/possa instalar uma nova instância.

Agora você deve apenas configurar as permissões da conta de serviço do Reporting Point no SSRS. Eu pessoalmente não encontrei nenhum material detalhado sobre o assunto, apenas esse artigo, mas o mesmo é exagerado em relação as permissões necessárias.

Por fim, queria comentar que acho uma grande “mancada” essa dependência do SCCM em relação a uma instância padrão do SSRS, além do fato disso não estar bem documentado (no máximo encontramos algumas informações soltas em blogs na internet), principalmente disso ser algo conhecido desde a versão anterior e não ter sido “corrigido” para a versão 2012.

Ainda quis abrir um item no connect, mas não encontrei o system center 2012 listado lá.

Esse post foi publicado em Artigos, Virtual PASS BR, WMI. Bookmark o link permanente.

3 respostas para System Center Configuration Manager x SQL Server Reporting Services x WMI

  1. Pingback: Adicionando o SSRS em uma instância de cluster já existente | Vladimir M. B. Magalhães – Learn and Share

  2. Pingback: System Center Advisor « Alex Souza

  3. Pingback: System Center Operations Manager 2012 x SQL Server | Vladimir M. B. Magalhães – Learn and Share

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s