SSIS Excel Connection Manager Hatası 0xC0209303'ü nasıl çözebilirim?


9

Bir excel dosyasını bir SQL Server tablosuna alır SSIS paketi oluşturduk.

Makinemde yerel olarak çalıştırdığımda SSIS paketi sorunsuz çalışıyor, ancak paketin planlanacağı sunucuda çalıştırdığımda aşağıdaki hatayı alıyorum (bir metin dosyasından hataları SSIS günlüğü kullanmaya kadar çıkıyorum).

Araştırdıktan sonra, bulabildiğim tek öneri Run64BitRuntime özelliğini yanlış yaptığım, ancak hala şansa ayarlamak oldu. Hatanın 64 bit ile ilgili bir şey belirtmediği için bu benim hataya neden olan şüpheliyim (bulduğum makalelerde olduğu gibi).

Ben de Sunucu uygun Excel sürücülerine sahip olmadığını düşündüm ama ben de böyle olduğunu sanmıyorum çünkü genellikle hata mesajı sürücüleri kaydedilmiyor hakkında bir şey söylerdi.

Şu anda sunucuya uzaktan erişimim yok. Paketi yalnızca bir klasöre yükleyebilir ve sonra bir uygulama tarafından çalıştırılır, böylece görebildiğim tek hata mesajları oluşturduğum metin hata günlüğünde nelerdir.

resim açıklamasını buraya girin

Hata Kodu DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. "Envision" bağlantı yöneticisine AcquireConnection yöntem çağrısı 0xC0209303 hata koduyla başarısız oldu. AcquireConnection yöntemi çağrısının neden başarısız olduğu hakkında daha fazla bilgi içeren, bundan önce gönderilen hata iletileri olabilir.

"Envision", excel bağlantı yöneticimin adıdır.

Excel Dosya Yolu ve Bağlantı Dizesi ifadelerini kullanarak dolduruyorum.

Bağlantı dizesi ifadesi şöyle görünür:

"Sağlayıcı = Microsoft.ACE.OLEDB.12.0; Veri Kaynağı =" + @ [Kullanıcı :: SourceFilePath] + "; Genişletilmiş Özellikler = \" EXCEL 12.0 XML; HDR = EVET \ ";"

SSIS Pacakge bir windows kullanıcı adı / hesabı tarafından yürütülür. Bence bu bir web hizmetleri hesabı olabilir. (BDS_sprtIIS)

Herkes paketin dağıtılacağı gerçek sunucuda değil, yalnızca yerel makinemde çalışan paketin bu sorununun nasıl çözüleceğine dair herhangi bir çözüm veya öneri var mı?

Aşağıdaki yanıtı başka bir forumda buldum, sorunuma neden olan şey bu olabilir mi? Temel olarak, Excel bağlantı yöneticisinin bir nedenden dolayı kullanıcı temp klasörüne erişmeye çalıştığını ve bu klasöre erişimi yoksa diyor ki başarısız olacaktır:

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/da77919c-0161-4eb5-bf89-7107d839435a/the-acquireconnection-method-call-to-the-connection-manager-excel-connection- müdür-başarısız-ile? forum = sqlintegrationservices

Microsoft.JET.OLEDB.4.0 sürücüsünün oturum açmış kullanıcının profilinin altındaki geçici dizini okumaya çalışacağını fark ettim.

.

... SQL Aracılarımızı daha düşük bir etki alanı hesabı kullanarak ve SSIS paketlerimizi bir Proxy Hesabı kullanarak çalıştırıyoruz. Procmon'un benim için doğruladığı gibi haklısın. Proxy Hesabı haklarını profilin geçici dizinine (C: \ Documents and Settings \ SQLAgentDomainAccount \ Local Settings \ Temp) verdim ve işe yaradı!

SQL Server Jobs veya Proxy hesapları kullanarak kullanmıyorum. Paket, büyük olasılıkla bir komut satırı komut dosyası aracılığıyla bir windows hesabı tarafından yürütülür.

Windows hesabının dosyaya erişimi var ama onun "TEMP" klasörüne erişimi olup olmadığından emin değilim (o pakete neden başvurmam gerektiğini bilmiyorum). ...

Yanıtlar:


8

Paketin sunucuda çalışmasını engelleyen 2 sorun vardı. 2 sorun ve bulduğum çözümler aşağıda.

  1. Paket, varsayılan olarak 64 bit DTexec yardımcı programını kullanan bir uygulama tarafından yürütülür, ancak Excel dosyasına Excel bağlantı yöneticisi aracılığıyla düzgün bir şekilde erişebilmek için yardımcı programın 32 bit sürümü kullanılarak çalıştırılması gerekir.

    32 bit (64 bit yerine) DTExec yardımcı programını çağıran ve özgün paketi açma komutunu ileten Execute Process Task kullanan bir "wrapper" SSIS paketi oluşturdum.

    İşlem Görevi Yürüt

  2. Ayrıca Microsoft Access Veritabanı Altyapısı 2010 Yeniden Dağıtılabilir'in 32 bit sürümünü de yüklemem gerekiyordu .

Daha fazla okuma:

Microsoft.ACE.OLEDB.12.0 kaydedilmedi (Yığın Taşması)


2

32-bit Access Engine'i kurmak ve 32-bit modunda çalıştırmak benim için çalıştı!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.