Masukkan Massal Melalui Jaringan

13

Adakah yang bisa membantu saya dengan ini?

BULK INSERT DATABESE01.dbo.TABLE01
FROM '\\COMPUTER01\FOLDER01\TextFile.txt'
WITH
(
    FIELDTERMINATOR = ' ',
    rowterminator = '\n',
    tablock
)

Kesalahan menunjukkan, tidak bisa membuka:

Tidak dapat memasukkan secara massal karena file '\ SERVERNAME \ FOLDERNAME \ textFile.txt' tidak dapat dibuka. Kode kesalahan sistem operasi 5 (Akses ditolak.)

Path ada di komputer lain di jaringan.

Jonas Ivy V. Imperial
sumber
8
Apakah akun yang menjalankan SQL Server di bawah memiliki izin untuk mengakses '\\COMPUTER01\FOLDER01\TextFile.txt'? Perhatikan bahwa akun pada umumnya akan berbeda dari akun Anda .
Damien_The_Unbeliever
3
Bisakah Anda juga menambahkan kesalahan persis yang Anda dapatkan?
ypercubeᵀᴹ
selain @Damien_The_Unbeliever: "Untuk menentukan file data bersama, gunakan nama konvensi penamaan universal (UNC), yang mengambil bentuk umum, \\ Servername \ Sharename \ Path \ Filename"
JoseTeixeira
@ypercube - Tidak dapat memasukkan secara massal karena file '\\ SERVERNAME \ FOLDERNAME \ textFile.txt' tidak dapat dibuka. Kode kesalahan sistem operasi 5 (Akses ditolak.). terima kasih pak
Jonas Ivy V. Imperial
Saya memiliki masalah yang sama menggunakan domain dan domain silang yang sama (Kode kesalahan sistem 5 operasi (Akses ditolak.)). Menariknya, jika saya menggunakan XP_CMDSHELL untuk menguji apakah file tersebut ada atau saya bahkan dapat memindahkan file, tetapi insert bulk membuang akses ditolak. Akun layanan sql dan akun windows saya memiliki izin untuk folder tersebut.

Jawaban:

14

Saya akan membuat lompatan iman dan menganggap Anda terhubung ke SQL Server menggunakan Windows Authentication. Dalam kasus seperti itu, Anda memiliki Kerberos double hop: satu hop adalah aplikasi klien Anda yang terhubung ke SQL Server, hop kedua adalah SQL Server yang menghubungkan ke remote \\COMPUTER01. Double hop seperti itu berada di bawah batasan Delegasi Terkendali dan Anda akhirnya mengakses bagian itu sebagai Login Anonim dan karenanya Akses Ditolak.

Untuk memperbaiki masalah ini, Anda perlu mengaktifkan delegasi terbatas untuk akun layanan SQL Server. Blog ini Cara: Sisipan Massal SQL Server dengan Delegasi yang Terkendala (Akses Ditolak) memiliki contoh cara melakukannya, dan saya benar-benar berharap bahwa langkah tentang cara 'mengaktifkan delegasi yang tidak dibatasi' hanyalah salah ketik sebagai delegasi yang tidak dibatasi adalah kejahatan biasa.

Dalam hal ini saya melompat pistol dan Anda masuk ke SQL Server menggunakan SQL Authentication Anda perlu membuat kredensial untuk login SQL Anda dan menggunakannya untuk mengakses sumber daya jaringan. Lihat CREATE CREDENTIAL.

Remus Rusanu
sumber
1

Sql Server mencoba membuka file, server file mengatakan "Akses ditolak" karena akun yang dijalankan oleh SQL Server tidak memiliki izin untuk membuka file. Ubah pengaturan keamanan pada file sesuai dan itu akan berfungsi.

TomTom
sumber
1

Saya akan menjalankan skrip di bawah Login SQL (dengan izin bulkadmin) dan membiarkan izin pada folder jaringan mengotentikasi terhadap Akun Layanan SQL atau akun Agen SQL Server.

Cozzaro Nero
sumber
-2

Saya akan memberi tahu Anda apa yang berhasil bagi saya setiap kali saya menerima pesan ini. saya membuka file csv sebagai teks di notepad dan menghapus semua garis spasi di file, saya tidak bisa melihat garis-garis kosong di file excel. Biasanya ini hanya baris terakhir yang tampaknya muncul meskipun kosong

Dimius
sumber
Apakah Anda yakin itu kesalahan yang sama?
dezso
Ini tidak ada hubungannya dengan kesalahan Akses Ditolak. Ini hanya memperbaiki kesalahan format file.
Julien Vavasseur