Bagaimana saya bisa mengatasi Kesalahan SSIS Excel Connection Manager 0xC0209303?


9

Saya telah membuat paket SSIS yang mengimpor file excel ke tabel SQL Server.

Paket SSIS berjalan tanpa masalah ketika saya menjalankannya secara lokal di mesin saya tetapi ketika saya menjalankannya di server di mana paket itu dijadwalkan saya mendapatkan kesalahan di bawah ini (dari file teks saya menghasilkan kesalahan untuk menggunakan SSIS logging).

Setelah meneliti, satu-satunya rekomendasi yang bisa saya temukan adalah mengatur properti Run64BitRuntime menjadi false yang saya lakukan tetapi masih belum berhasil. Saya ragu ini adalah apa yang menyebabkan kesalahan saya karena kesalahan tidak menentukan apa-apa tentang 64 bit (seperti halnya dalam artikel yang saya temukan).

Saya juga berpikir bahwa itu mungkin bahwa Server tidak memiliki driver Excel yang sesuai tetapi saya tidak berpikir itu yang terjadi karena biasanya pesan kesalahan akan mengatakan sesuatu tentang driver yang tidak terdaftar.

Saat ini saya tidak memiliki akses ke remote ke server. Saya hanya bisa mengunggah paket ke folder dan kemudian dijalankan oleh aplikasi sehingga satu-satunya pesan kesalahan yang bisa saya lihat adalah apa yang ada di log kesalahan teks yang saya buat.

masukkan deskripsi gambar di sini

Kode Kesalahan DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. Panggilan metode AcquireConnection ke manajer koneksi "Envision" gagal dengan kode kesalahan 0xC0209303. Mungkin ada pesan kesalahan yang diposting sebelum ini dengan informasi lebih lanjut tentang mengapa panggilan metode AcquireConnection gagal.

"Membayangkan" adalah nama manajer koneksi excel saya.

Saya mengisi Jalur File Excel dan String Koneksi menggunakan ekspresi.

Ekspresi string koneksi terlihat seperti ini:

"Penyedia = Microsoft.ACE.OLEDB.12.0; Sumber Data =" + @ [Pengguna :: SourceFilePath] + "; Extended Properties = \" EXCEL 12.0 XML; HDR = YES \ ";"

SSIS Pacakge dijalankan oleh nama pengguna / akun windows. Saya pikir itu mungkin akun layanan web. (BDS_sprtIIS)

Apakah ada yang punya solusi atau saran tentang bagaimana menyelesaikan masalah paket ini hanya bekerja pada mesin lokal saya tetapi tidak pada server yang sebenarnya di mana paket itu akan digunakan?

Saya menemukan jawaban di bawah ini di forum lain, mungkinkah yang menyebabkan masalah saya? Mereka pada dasarnya mengatakan bahwa manajer koneksi Excel mencoba mengakses folder temp pengguna untuk beberapa alasan dan jika tidak memiliki akses ke folder itu maka ia akan gagal:

https://social.msdn.microsoft.com/Forums/sqlserver/en-US/da77919c-0161-4eb5-bf89-7107d839435a/the-acquireconnection-method-call-to-connection-manager-excel-connection- manager-gagal-dengan? forum = sqlintegrationservices

Saya perhatikan juga bahwa driver Microsoft.JET.OLEDB.4.0 akan mencoba membaca direktori temp di bawah profil pengguna yang masuk.

.

... Kami menjalankan Agen SQL kami menggunakan akun domain tingkat lebih rendah dan menjalankan paket SSIS kami menggunakan Akun Proxy. Anda benar karena Procmon juga mengkonfirmasinya untuk saya. Saya memberikan hak Akun Proxy ke direktori temp profil (C: \ Documents and Settings \ SQLAgentDomainAccount \ Local Settings \ Temp) dan berhasil!

Saya tidak menggunakan akun SQL Server Jobs atau Proxy. Paket ini hanya dijalankan oleh akun windows kemungkinan besar melalui skrip baris perintah.

Akun windows memiliki akses ke file tetapi saya tidak yakin jika memiliki akses ke folder "TEMP" (yang saya tidak pernah referensi dalam paket jadi saya tidak tahu mengapa itu harus memiliki akses ke folder itu) ...

Jawaban:


8

Ada 2 masalah yang mencegah paket berjalan di server. Di bawah ini adalah 2 masalah dan solusi yang saya temukan.

  1. Paket dijalankan oleh aplikasi yang menggunakan utilitas DTexec 64-bit secara default tetapi paket harus dijalankan menggunakan utilitas versi 32 bit untuk dapat mengakses file Excel dengan benar melalui manajer koneksi Excel.

    Saya membuat paket SSIS "wrapper" yang menggunakan Execute Process Task yang memanggil utilitas DTExec 32-bit (bukan 64 bit) dan meneruskan perintah untuk membuka paket asli.

    Jalankan Tugas Proses

  2. Saya juga perlu menginstal versi 32-bit dari Microsoft Access Database Engine 2010 Redistributable .

Bacaan lebih lanjut:

Microsoft.ACE.OLEDB.12.0 tidak terdaftar (Stack Overflow)


2

Menginstal Mesin Akses 32-bit dan berjalan dalam mode 32-bit bekerja untuk saya!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.