Eu tenho um requisito para ler dados de referência de vários bancos de dados de acesso para um trabalho ETL. Os proprietários dos dados produziram um arquivo com uma série de tabelas vinculadas que as consolida em um só lugar. No entanto, se um dos arquivos base estiver aberto com um arquivo de bloqueio (.ldb), o provedor OLEDB se recusará a abrir a tabela vinculada.
O pacote SSIS é configurado com várias tarefas de fluxo de dados lendo de fontes OLEDB. Para esclarecer, essas são tabelas de referência e não necessariamente atualizadas no momento - o arquivo .mdb possui um arquivo de bloqueio (.ldb).
É possível configurar o driver OLEDB do MS jet para forçar a abertura das tabelas vinculadas, ignorando os bloqueios?
Algumas alternativas que analisamos são:
Configure as tabelas vinculadas ao contrário - coloque as fontes no banco de dados central e vincule-as a partir do outro DBS de acesso. A empresa está relutante em fazer isso e não temos poder para forçá-lo.
Copie os bancos de dados básicos para uma área de preparação e abra as cópias - este é o nosso plano B, embora envolva a transferência de cerca de 2 GB em um link WAN lento e adicione latência logo no início do trabalho ETL (praticamente tudo depende de estas tabelas de referência). Prefiro evitar a latência, se possível.
EDIT: Veja minha resposta - o problema ocorreu devido à falta de permissão de gravação no arquivo de bloqueio e uma mensagem de erro ambígua retornada pelo driver.
Encontrou o problema - problema de permissão disfarçado. O driver Jet precisa ter acesso de gravação no diretório para poder atualizar os arquivos de bloqueio. Quando não consegue gravar nos arquivos de bloqueio, ele joga seus brinquedos para fora do berço com uma mensagem de erro enganosa.