20

Ben bir SQL Server Agent Job olarak bir saklı yordam kurmaya çalışıyorum ve bana aşağıdaki hata veriyor, Dosya açılamadığından yığın yük yapılamıyor. İşletim Sistemi Hatası Kod 3

Can değil toplu yükleme için dosya "P: \ file.csv" could açılmamak İşletim sistemi hata kodu 3 (bu hata için metni alamadı. Sebep: 15105). [Sqlstate 42000] (Hata 4861)

Komik şey elle yürütmek zaman Saklı Yordam gayet güzel çalışıyor.

sürücü P: aşağıdaki komutlarla tarafından kuruldu Samba Share üzerinden LINUX Windows SQL Server paylaşılan bir sürücü ve,

EXEC 'net kullanım P xp_cmdshell: "\ lnxusanfsd01 \ Data" Şifre/kullanıcı: username/Kalıcı: Evet

Bu herhangi bir yardım derece

+1

bir izin sorunu benziyor.SQL Server Agent, genellikle el ile çalıştırdığınızda, farklı bir kullanıcı olarak farklı izinlerle çalışır. Ajan yerel bir dizinde ise Ajan çalışıyor mu? Aracı aynı zamanda '' net use'' komutunu çalıştırıyor mu? – acfrancis

+0

Aracı, net use komutunu çalıştırmıyor. SQL Server – user1345260

+0

için RDP erişimim olmadığı için test etmedim Peki, "net use'" cmd'yi Agent işine eklerseniz işe yarıyor mu? Bu olmadan, '' P: '' sürücüsünün sadece kullanıcı adınızın Windows oturumunda, Aracı'nın değil de kullanılabileceğine eminim. – acfrancis

cevap

0

muhtemelen bir izin sorunu var mutluluk duyacağız ama gidermek için şu adımları deneyin emin olun gerekir:

  • yerel sürücüde dosyayı koyun ve iş çalışıp çalışmadığını anlamak (eğer veritabanı sunucusu üzerinde bir dizine yerel iş istasyonunda bir sürücü harfi eğer mutlaka RDP erişimi gerekmez)
  • dosyayı giy kullanıcı adı ve şifreyi gerektirmeyen bir uzaktan dizin (Herkes okumanızı sağlar) ve UNC yolunu (\ sunucu \ dizin \ file.csv)
  • yapılandır kendi kullanıcı adınız
  • yapılandır olarak çalıştırmak için SQL iş kullanmak SQL iş sa olarak çalışacak ve sonuna net use ve net use /delete komutları eklemek için

Değişiklikleri geri almayı unutmayın (özellikle sa olarak çalışıyor). Başka hiçbir şey işe yaramıyorsa, toplu yüklemeyi veritabanı sunucusunda veya bcp yüklü başka bir sunucuda çalıştırarak zamanlanmış bir göreve değiştirmeyi deneyebilirsiniz.

+0

SQL işini kendi kullanıcı adınız olarak çalışacak şekilde nasıl yapılandırabilirim? Giriş yapmaya gittim ve UserMapping sırasında msdb'yi seçtim ve SQLAgent için izin verdim. Bu doğru mu? – user1345260

+0

Şu anda SQL Server'a erişimim yok, ancak sürümünüze bağlı olarak, bu http://i31.tinypic.com/zjdqh3.jpg – acfrancis

+0

gibi görünebilir SQL çalışmasını çalıştırmak için SQL Server kimlik doğrulaması kullanmayı denedim ama Aşağıdaki hatayı alıyorum, Sunucu yöneticisi "sqldev01", geçerli güvenlik bağlamında "mydatabase" veritabanına erişemiyor. sqldev01 hesabının, csv dosyasını eklemeye çalıştığım mydatabase'e db_owner erişimi var. Ayrıca Master veritabanına db_owner erişimi ve ayrıca Bulkadmin rolüne sahiptir. Lütfen yardım edin – user1345260

35

Bu sorunu çözüp çözmediğinizi bilmiyorum, ancak aynı sorunla karşılaştım, eğer örnek yerel ise, dosyaya erişim iznini kontrol etmelisiniz, ancak bilgisayarınızdan bir sunucuya (uzaktan erişim) erişiyorsanız, bu benim durum

örneği çözüldü sunucu dizinine dahil etmek için gelir böylece, sunucudaki yolunu belirtmeniz gerekir:

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

Teşekkürler, tam olarak benim sorunumu işaret ettiniz ve 15 dakikamı çözdünüz 'Dosya var, neden okuyamıyorsunuz?'. –

+0

Hoşgeldiniz @DominicMcDonnell! Yardım ettiğine sevindim! – DuSant

+0

Teşekkürler @DuSant dosyanın izni nedir? - sağ tıklama -> güvenlik -> düzenle -> tam kontrole sahip. Teşekkür ederim! –

2

bu basit tutmak için, sadece dizini değiştirildi Verileri numaralı sunucuda yerel bir klasöre aktarıyordum.

Dosyayı paylaşılan bir klasörde buldum, sadece dosyalarımı sunucumda "c: \ TEMP \ Reports" olarak kopyaladım (sorguyu yeni klasörden BULK INSERT olarak güncelleştirdim). Ajan görevi başarıyla tamamlandı :)

Nihayet uzun bir süre sonra BULK Ekleme aracı aracılığıyla otomatik olarak ekleyebiliyorum.

Saygılarımızla.

1

Ben P öneririm: Tahrik sunucusu olarak başladı sql hesap için eşlenmedi.

İlgili konular