Dosya açılamadığı için toplu yükleme yapılamıyor. İşletim Sistemi Hata Kodu 3

SQL Server Agent Job olarak bir Stored Procedure ayarlamaya çalışıyorum ve aşağıdaki hatayı alıyorum,

Toplu yükleme yapılamıyor çünkü "P:\file.csv" dosyası açılamadı. İşletim sistemi hata kodu 3 (bu hata için metin alınamadı. Neden: 15105). [SQLSTATE 42000] (Hata 4861)

İşin komik yanı, elle çalıştırdığımda Saklı Yordam gayet iyi çalışıyor.

P: sürücüsü, Samba Paylaşımı aracılığıyla LINUX'tan Windows SQL Server üzerinde paylaşılan bir sürücüdür ve aşağıdaki komut çalıştırılarak kurulmuştur,

EXEC xp_cmdshell 'net use P: "\lnxusanfsd01\Data" Password /user:username /Persistent:Yes'

Bu konuda herhangi bir yardım çok takdir edilecektir

Bu sorunu çözdünüz mü bilmiyorum ama bende de aynı sorun vardı, eğer örnek yerel ise dosyaya erişim iznini kontrol etmelisiniz, ancak bilgisayarınızdan bir sunucuya erişiyorsanız (uzaktan erişim) sunucudaki yolu belirtmeniz gerekir, bu da dosyayı bir sunucu dizinine dahil etmek anlamına gelir, bu benim durumumu çözdü

Örnek:

BULK INSERT Table
FROM 'C:\bulk\usuarios_prueba.csv' -- This is server path not local
WITH 
  (
     FIELDTERMINATOR =',',
     ROWTERMINATOR ='\n'
  );
Yorumlar (3)

Bunu basit tutmak için, Verileri içe aktardığım dizini sunucudaki yerel bir klasör olarak değiştirdim.

Dosya paylaşılan bir klasörde bulunuyordu, dosyalarımı sunucumdaki "c:\TEMP\Reports" konumuna kopyaladım (sorguyu yeni klasörden BULK INSERT olarak güncelledim). Aracı görevi başarıyla tamamlandı :)

Nihayet uzun bir süre sonra, temsilci işi aracılığıyla otomatik olarak BULK Insert yapabiliyorum.

Saygılarımla.

Yorumlar (0)

Muhtemelen bir izinler sorunudur, ancak sorunu gidermek için bu adımları denediğinizden emin olmanız gerekir:

  • Dosyayı yerel bir sürücüye koyun ve işin çalışıp çalışmadığına bakın (yerel iş istasyonunuzdaki bir sürücü harfini veritabanı sunucusundaki bir dizine eşleyebiliyorsanız RDP erişimine ihtiyacınız olması gerekmez)
  • Dosyayı kullanıcı adı ve parola gerektirmeyen (herkesin okumasına izin veren) uzak bir dizine yerleştirin ve UNC yolunu kullanın (\server\directory\file.csv)
  • SQL işini kendi kullanıcı adınızla çalışacak şekilde yapılandırın
  • SQL işini sa olarak çalışacak şekilde yapılandırın ve net use ve net use /delete komutlarını önce ve sonra ekleyin

Değişiklikleri geri almayı unutmayın (özellikle sa olarak çalıştırırken). Başka hiçbir şey işe yaramazsa, toplu yüklemeyi veritabanı sunucusunda veya bcp yüklü başka bir sunucuda çalışan zamanlanmış bir göreve dönüştürmeyi deneyebilirsiniz.

Yorumlar (4)