Pergunta

Estou correndo em torno dos círculos nos últimos 2 dias, tentando descobrir um problema em nossos clientes ao vivo. Achei que poderia publicá -lo aqui, já que o Google me deu informações muito limitadas sobre a mensagem de erro (5 resultados para ser exato).

O erro se resume a um tempo limite ao solicitar um determinado relatório no SSRS2005, quando um determinado parâmetro é usado.

O cenário de implantação é: Máquina nº 1 Serviços de relatórios em execução (SQL2005, W2K3, IIS6) Máquina nº 2 em execução DataWarehouse Database (SQL2005, W2K3), que é a fonte de dados para as duas máquinas que estão sendo executadas no mesmo cluster da VM e LAN.

O relatório solicita um SP bastante simples - vamos chamá -lo de sp (param $ a, param $ b). Quando solicitado com o param $ a preenchido, ele será executado corretamente. Ao usar o param $ b, ele se destaca após o tempo de period do tempo limite global.

Se eu executar o procedimento armazenado com o Param $ B diretamente do SQL Management Studio no #2, ele retornará os resultados perfeitamente bem (dentro de 3-4s).

Eu perfilei o banco de dados do DataWarehouse no #2 e quando o param $ B é usado, a consulta do Serviço de Relatório para o banco de dados, nunca chega ao #2.

A mensagem de erro que recebo no tempo limite, ao usar o param $ B, ao invocar o relatório diretamente da interface da Web do SSRS é:

"Ocorreu um erro durante o processamento do relatório.Não é possível ler a próxima linha de dados para o conjunto de dados do conjunto de dados.Um erro severo ocorreu no comando atual. Os resultados, se existirem, deveriam ser descartados. Operação cancelada pelo usuário. "

O ExecutionLog para o SSRS me fornece muita informação além da mensagem de erro RSProcessingAborted

Estou ficando sem idéias de como acertar esse problema. Então, eu apreciaria muito quaisquer comentários, sugestões ou idéias.

Desde já, obrigado!

Foi útil?

Solução

A primeira coisa que você precisa fazer é garantir que suas estatísticas estejam atualizadas.

(Parece um caso de um plano de consulta incorreto sendo usado devido a Parâmetro Sniffing, conforme descrito nisso, então responda: Parâmetro Sniffing (ou falsificação) no servidor SQL).

Uma maneira de corrigir isso no SQL Server 2005 é usar o Otimizar para Dica de consulta. Veja também Otimize para a dica de consulta no SQL Server 2005

Além disso, você tem um trabalho de reconstrução de índice programado regular para alguns ou todos os seus índices?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top