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.
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:
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). ...