none
Erro Lookup Usando Opção Advanced RRS feed

  • Pergunta

  • Ola Pessoal,

     

    Estou criando um Lookup usando a opção Advanced "Enable Memory Restriction"

    Pois preciso pegar o ID de minha dimensão em um determinado intervalo.

    Então substituo a query gerada pelo Lookup pela Query abaixo:

    select * from
     (select * from [dbo].[TABELA]) as refTable
    where [refTable].[CAMPO] <= ?  and [refTable].[CAMPO] >= ?

    Seleciono o campo da minha Query através da opção Parameters.

     

    O problema é que ao executar recebo os seguintes erros:

    [Lookup XXXXXXXXX [5726]] Error: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80004005. An OLE DB record is available.  Source: "Microsoft SQL Native Client"  Hresult: 0x80004005  Description: "An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections.". An OLE DB record is available.  Source: "Microsoft SQL Native Client"  Hresult: 0x80004005  Description: "Communication link failure". An OLE DB record is available.  Source: "Microsoft SQL Native Client"  Hresult: 0x80004005  Description: "Named Pipes Provider: No process is on the other end of the pipe. ".

    [Lookup XXXXXXX [5726]] Error: OLE DB error occurred while fetching parameterized rowset. Check SQLCommand and SqlCommandParam properties.

    Error: SSIS Error Code DTS_E_PROCESSINPUTFAILED.  The ProcessInput method on component "Lookup XXXXXXXX" (5726) failed with error code 0xC0208253. The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running.  There may be error messages posted before this with more information about the failure.

     

    Sempre usei esse tipo de Lookup e nunca tive problemas, alguem sabe me dizer o que está acontecendo?

    Ja tentei executar esse comando : Netsh int ip set chimney DISABLED

    referente a este artigo:  http://support.microsoft.com/kb/945977

    Porém sem sucesso.

     

    PS: Detalhe que percebi, só está acontecendo para pacotes cujo eu tenho a opção do banco RetainSameConnection = True

     

    Se alguém puder me ajudar, agradeço.

     

    Att,

    MRC.

     



    quarta-feira, 4 de maio de 2011 14:47

Todas as Respostas

  • MRC,

    Por acaso esta conexão que você esta utilizando é a mesma utilizada em algum outro pacote que possa estar em execução?

    A mensagem de erro esta destacando uma falha em realizar uma tentativa de conexão remota, você já verificou se o serviço SQL Browser esta funcionando?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    quinta-feira, 5 de maio de 2011 18:57
    Moderador
  • Olá Junior,

     

    Obrigado pela ajuda e desculpe a demora na resposta, Uso de internet aqui é meio limitado.

     

    Então, respondendo suas perguntas:

     

    - Não a conexão que estou usando não está em execução em nenhum outro pacote, este é o unico pacote sendo executado no momento, estou rodando manualmente.

     

    - Sql browser está funcionando normalmente.

     

    Algo que eu percebi, é que este erro só acontece quando estou utilizando a opção de conexão do meu banco como, RetainSameConnection = True.

     

    Se estou usando está conexão como True e Utilizo essa opção de Advanced no meu Lookup acontece este erro no meu Lookup. Se eu apenas mudar minha conexão para False, o lookup não dá erro.

    Estou utilizando a conexão como True pois estou usando uma tabela temporária nesse mesmo processo, porém nada a ver com o Lookup em questão, uso a temporária em um outro Task do processo.

    Uma das alternativas para este caso já que estou com urgencia, foi desativar a opção e criar a tabela fisicamente no banco e depois dropa-la.

     

    Porém é muito estranho acontecer isso, nunca tinha pego este erro.

    Se você puder tentar simular o erro ai para ver como acontece ..... me diga oq você acha q pode ser ?

     

    Obrigado,

    MRC.

     


    segunda-feira, 9 de maio de 2011 15:29
  • Olá MRC.

    Pelo que sei a opção RetainSameConnection=TRUE serve para que você inicie uma transação, dentro de um pacote SSIS, em um ponto e a comite ou efetue Rollback em outro ponto do mesmo pacote.

    No link abaixo tem um post bem velhaco do uso dessa opção no 2005.

    http://consultingblogs.emc.com/jamiethomson/archive/2005/08/20/SSIS-Nugget_3A00_-RetainSameConnection-property-of-the-OLE-DB-Connection-Manager.aspx

    Você necessita usar essa opção como TRUE?

    Espero que ajude

    Sds.

    segunda-feira, 9 de maio de 2011 17:58
  • Olá Ponte,

     

    Eu utilizo a opção RetainSameConnection para utilização de tabelas temporárias, come essa opção posso criar uma tabela temporaria universal (utilizando ##tabelatemp) e após a criação posso utilizar ela em qualquer parte do meu processo, desde que ele não se encerre.

    Porém, sempre utilizei isso sem problemas, meu problema em questão está sendo que nos pacotes que utilizo isso, e ao mesmo tempo tento utilizar um Lookup com a opção advanced "Enable Memory Restriction" , não sei porque o Lookup nao funciona, a menos que eu utilize o Lookup no modo normal, ou retire a opção RetainSameConnection de true para false.

    Se puder, faça um teste e me diga se consegue.

     

    Att,

    MRC.

    segunda-feira, 9 de maio de 2011 18:53
  • MRC,

    Cara vamos por partes, eu andei pesquisando um pouco e acredito que podemos caminhar neste dúvida.

    Quando falamos de tabelas temporárias locais ou globais estamos se referindo a um objeto temporário que se encontra em execução dentro de uma sessão, transação ou instância de servidor SQL Server. Estes objetos são pertencentes ao banco TEMPDB e não ao banco ao qual você esta conectado.

    Neste caso a partir do momento em que estamos utilizando o Integration Services para trabalhar com objetos temporários é necessário ativar o opcão RetainSameConnection, para informar ao Integration Services+SQL Server que os objetos processos e criados dentro deste pacote devem estar restritos a esta conexão, além disso este opção nos permite criar objetos temporários globais!!!!

    Quando utilizamos o componente Lookup estamos especificando uma estrutura que deverá receber dados vinculados de outra estrutura, fazer um tratamento e apresentar em tela, pois bem, se você esta restringindo o uso de memória neste pacote e esta fazendo uso do Lookup, o SSIS esta entendendo que ele deverá limitar o uso de memória disponível a ela para este sessão e pacote, sendo assim, o Lookup vai apresentar este falha!!! Por isso que em modo normal você conseguir reter a mesma sessão de conexão e seus objetos e ainda trabalhar com o Lookup pois não existe limitação de memória.

    Se você esta criando um objeto temporário, ele esta sendo criado fisicamente no banco de dados TEMPDB mas virtualmente vinculado a sessão e banco de dados, mas principalmente a memória.

    O RetainSameConnection ao meu ver pode ser considerado uma técnica de Transação Explícita trabalhando diretamente com Commit/Rollback dentro de um pacote SSIS.

    Como você mesmo informou criando o tabela dentro do seu banco de dados e após a execução de algumas task realiza a execução da mesma, isso é mais um indicador que a possibilidade de se trabalhar com os objetos em tempo de execução esta sendo limitado.

    Bom espero que você possar ter entendido.


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    quarta-feira, 11 de maio de 2011 13:15
    Moderador
  • Olá M.R.C.

     

    Desculpe. Só vi hoje sua resposta.

     

    Você conseguiu alguma solução no seu problema?!

     

    Sds.


    Fernando Ponte
    segunda-feira, 16 de maio de 2011 18:18
  • MRC,

    Você chegou a realizar algumas alterações em seu pacote para testar?


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    terça-feira, 17 de maio de 2011 18:07
    Moderador