Usuário com melhor resposta
Erro ao executar JOB para processar Cubos

Pergunta
-
Criei um JOB para processar alguns cubos do Analysis Services e está dando erro.
Quando acesso o Analysis Services no Management Studio e clico em processar funciona certinho, quando tento executar pelo JOB não dá. No JOB eu configurei como "Comando do SQL Server Analysis Services"
Este é o XMLA:
<Batch xmlns="http://schemas.microsoft.com/analysisservices/2003/engine"> <Process xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="http://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="http://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="http://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200="http://schemas.microsoft.com/analysisservices/2010/engine/200" xmlns:ddl200_200="http://schemas.microsoft.com/analysisservices/2010/engine/200/200" xmlns:ddl300="http://schemas.microsoft.com/analysisservices/2011/engine/300" xmlns:ddl300_300="http://schemas.microsoft.com/analysisservices/2011/engine/300/300" xmlns:ddl400="http://schemas.microsoft.com/analysisservices/2012/engine/400" xmlns:ddl400_400="http://schemas.microsoft.com/analysisservices/2012/engine/400/400"> <Object> <DatabaseID>Business Intelligence</DatabaseID> </Object> <Type>ProcessFull</Type> <WriteBackTableCreation>UseExisting</WriteBackTableCreation> </Process> </Batch>
Este é o erro:
Microsoft.AnalysisServices.Xmla.ConnectionException: A connection cannot be made. Ensure that the server is running. ---> System.IO.IOException: Unable to read data from the transport connection: An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An existing connection was forcibly closed by the remote host at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) --- End of inner exception stack trace --- at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) at System.IO.BufferedStream.Read(Byte[] array, Int32 offset, Int32 count) at Microsoft.AnalysisServices.Xmla.DimeRecord.ForceRead(Stream stream, Byte[] buffer, Int32 length) at Microsoft.AnalysisServices.Xmla.DimeRecord.ReadHeader() at Microsoft.AnalysisServices.Xmla.DimeReader.ReadRecord() at Microsoft.AnalysisServices.Xmla.TcpStream.GetResponseDataType() --- End of inner exception stack trace --- at Microsoft.AnalysisServices.Xmla.XmlaClient.Connect(ConnectionInfo connectionInfo, Boolean beginSession) at Microsoft.SqlServer.Management.Smo.Olap.SoapClient.Connect() at OlapEvent(SCH_STEP* pStep, SUBSYSTEM* pSubSystem, SUBSYSTEMPARAMS* pSubSystemParams, Boolean fQueryFlag). The step failed.
No campo servidor já coloquei o nome do servidor e também tentei com o servidor/instancia.
Respostas
-
Pedro e Eduardo,
Muito obrigado pela ajuda de vocês, não descobri porque não funcionou, mas consegui uma solução.
No servidor do agendamento do JOB eu coloquei o IP virtual que aponta para o cluster do banco que estiver ativo. A princípio isso resolve meu problema. Obrigado.
- Sugerido como Resposta Eduardo Gomes Pereira terça-feira, 4 de novembro de 2014 17:51
- Marcado como Resposta Durval RamosModerator segunda-feira, 5 de janeiro de 2015 22:44
Todas as Respostas
-
Gleison,
Analisando a mensagem de erro, o Analysis Services esta retornando este mensagem informando que provavelmente uma conexão esta encerrando o processamento deste job.
Mas um ponto que me chamou a atenção é a parte do System.IO.IOException, este tipo de informação normalmente esta relacionada com o Disco Rígido!!! Por acaso você tem espaço suficiente em disco para que este Job consiga processar o cubo?
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | SoroCódigos] @JuniorGalvaoMVP | pedrogalvaojunior.wordpress.com
-
-
Sim, tenho espaço em disco suficiente.
Lembrando que "manualmente" funciona. Quando disparado pelo JOB não.
O user que executa o JOB é admin do banco e do domínio então não é permissão também.
Trabalhávamos com a instancia padrão antes, mas trocamos de versão e criamos uma instancia, a padrão agora aponta para essa instancia criada. Será que pode ser algo nesse sentido? Será que tem que alterar alguma coisa no serviço do Analysis pegar essa instancia?
-
Gleison, obrigado pelas informações.
Só mais uma dúvida: É o usuário que é o owner do JOB ou o usuário que está configuração no serviço do SQL Agent(SQLSERVERAGENT) que é Admin? Ou os dois são Admin?
Abs.
Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
-
Pedro e Eduardo,
Muito obrigado pela ajuda de vocês, não descobri porque não funcionou, mas consegui uma solução.
No servidor do agendamento do JOB eu coloquei o IP virtual que aponta para o cluster do banco que estiver ativo. A princípio isso resolve meu problema. Obrigado.
- Sugerido como Resposta Eduardo Gomes Pereira terça-feira, 4 de novembro de 2014 17:51
- Marcado como Resposta Durval RamosModerator segunda-feira, 5 de janeiro de 2015 22:44