Eu criei um pacote SSIS que importa um arquivo do Excel para uma tabela do SQL Server.
O pacote SSIS é executado sem nenhum problema quando eu o executo localmente na minha máquina, mas quando o executo no servidor em que o pacote será agendado, recebo o erro abaixo (de um arquivo de texto, estou gerando erros para usar o log do SSIS).
Depois de pesquisar, as únicas recomendações que encontrei foram definir a propriedade Run64BitRuntime como false, o que fiz, mas ainda não tive sorte. Eu duvido que isso esteja causando o meu erro, porque o erro não está especificando nada a respeito de 64 bits (como foi o caso nos artigos que encontrei).
Também pensei que o servidor não possui os drivers apropriados do Excel, mas também não acho que seja esse o caso, porque geralmente a mensagem de erro diz algo sobre os drivers não serem registrados.
Atualmente, não tenho acesso ao controle remoto no servidor. Só posso carregar o pacote em uma pasta e, em seguida, ele é executado por um aplicativo, de modo que as únicas mensagens de erro que vejo são as que estão no log de erro de texto que criei.
Código de erro DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. A chamada do método AcquireConnection para o gerenciador de conexões "Envision" falhou com o código de erro 0xC0209303. Pode haver mensagens de erro publicadas antes disso com mais informações sobre o motivo da falha da chamada do método AcquireConnection.
"Envision" é o nome do meu gerenciador de conexões do Excel.
Eu preencho o caminho do arquivo do Excel e a seqüência de conexão usando expressões.
A expressão da cadeia de conexão é assim:
"Provedor = Microsoft.ACE.OLEDB.12.0; Fonte de dados =" + @ [User :: SourceFilePath] + "; Propriedades estendidas = \" EXCEL 12.0 XML; HDR = SIM \ ";"
O SSIS Pacakge é executado por um nome de usuário / conta do Windows. Eu acho que pode ser uma conta de serviços da web. (BDS_sprtIIS)
Alguém tem alguma solução ou sugestão sobre como resolver esse problema do pacote que funciona apenas na minha máquina local, mas não no servidor real em que o pacote será implantado?
Encontrei a resposta abaixo em outro fórum. Poderia ser o que está causando meus problemas? Eles estão basicamente dizendo que o gerenciador de conexões do Excel tenta acessar a pasta temporária dos usuários por algum motivo e, se não tiver acesso a essa pasta, falhará:
Notei também que o driver Microsoft.JET.OLEDB.4.0 tentará ler o diretório temporário abaixo do perfil do usuário conectado.
.
... Executamos nossos agentes SQL usando uma conta de domínio de nível inferior e executamos nossos pacotes SSIS usando uma conta proxy. Você está correto, pois o Procmon confirmou para mim também. Eu dei os direitos da conta proxy ao diretório temporário do perfil (C: \ Documents and Settings \ SQLAgentDomainAccount \ Local Settings \ Temp) e funcionou!
Não estou usando contas do SQL Server Jobs ou Proxy. O pacote é simplesmente executado por uma conta do Windows provavelmente através de um script de linha de comando.
A conta do Windows tem acesso ao arquivo, mas não tenho certeza se ele tem acesso à pasta "TEMP" (que eu nunca faço referência no pacote, então não sei por que ele precisaria ter acesso a essa pasta) ...