Menjalankan paket SSIS yang dimiliki oleh pengguna domain dari SQL Server yang berjalan pada akun layanan lokal

10

Saya ingin menjalankan paket SSIS yang berisi tugas Transfer SQL Server Objects. Server yang terlibat berada di domain yang sama, tetapi layanan SQL Server berjalan di akun layanan lokal. Jadi lingkungannya terlihat seperti ini:

Domain

Server 1

  • SQL Server berjalan di akun lokal
  • Pada sistem file: paket SSIS
  • Dalam SQL Server Agent: pekerjaan

Server 2

  • SQL Server berjalan di akun lokal

Untuk dapat masuk ke kedua server, saya telah membuat akun domain untuk digunakan sebagai akun layanan. Ketika saya menggunakan akun domain ini untuk masuk ke Server 1, dan kemudian menjalankan paket dari sistem file, setiap langkah berhasil. Namun, ketika saya mencoba menambahkan pekerjaan ke SQL Server saya mengalami salah satu masalah berikut:

Situasi 1. Pemilik pekerjaan: akun lokal; jalankan langkah SSIS sebagai proksi ke akun domain . Ketika saya mengatur pemilik pekerjaan ke akun lokal, tetapi menjalankan pekerjaan sebagai proksi ke akun domain, pekerjaan itu sendiri akan berhasil dijalankan, tetapi paket tersebut melempar kesalahan seperti

Eksekusi gagal dengan kesalahan berikut: "Direktori 'LocalApplicationData' tidak ada.".

Kesalahan ini dapat diperbaiki dengan membuat login dengan hak Administrator untuk pengguna domain pada Server 1, tetapi ini jelas bukan solusi yang diinginkan. Menambahkan akun ke salah satu grup SQL Server agent / DTS juga tidak berfungsi.

Situasi 2. Pemilik pekerjaan: akun domain; jalankan langkah SSIS sebagai proksi ke akun domain . Ketika saya menetapkan pemilik pekerjaan dan 'jalankan sebagai pengguna' untuk langkah ke akun domain, pekerjaan tidak akan dimulai sama sekali, dengan kesalahan berikut:

Tidak dapat menentukan apakah pemilik (pengguna Domain \ Domain) dari pekerjaan Job namememiliki akses server (alasan: Tidak dapat memperoleh informasi tentang grup Windows NT / pengguna 'Domain \ Domain pengguna', kode kesalahan 0x5. [SQLSTATE 42000] (Kesalahan 15404)) .

Saya percaya kesalahan terakhir adalah karena SQL Server berjalan pada akun lokal dan karenanya tidak dapat melihat di mana akun domain hak miliki.

Apa cara yang tepat untuk membuat pekerjaan berjalan? Situasi 2 terasa lebih bersih bagi saya, tetapi tampaknya tidak mungkin karena SQL Server berjalan pada akun lokal. Situasi 1 akan berfungsi juga, tetapi memberikan hak administratif pengguna domain pada SQL Server saya tidak akan terjadi.


MEMPERBARUI:

@JonSeigel dan @ Mr.Brownstone:

Tampaknya masuk akal bahwa ini adalah masalah karena kurangnya izin. Namun, kesalahannya adalah tentang tidak adanya 'LocalApplicationData' - salah satu folder yang dihasilkan untuk setiap akun. Saya sudah masuk ke server dengan kredensial tempat paket berjalan, (dengan ini membuat direktori profil) dan mencoba beberapa kombinasi izin untuk direktori profil. Bahkan ketika secara manual memberikan hampir semua izin pada direktori khusus ini, saya mendapatkan kesalahan yang disebutkan di atas.

Sambil melakukan penelitian lebih lanjut, saya menemukan sebuah utas forum di http://www.sqlservercentral.com/Forums/Topic391332-148-1.aspx#bm391441 yang sangat mirip - meskipun tanpa solusi.

vstrien
sumber
Apakah ada alasan mengapa Anda tidak menggunakan akun domain untuk layanan SQL?
Eric Higgins
Ya, tapi saya tidak tahu alasannya (saya kira ada sesuatu dengan siklus DTAP dan domain tidak tersedia di mana-mana). Bagaimanapun, ini adalah lingkungan yang diberikan yang tidak boleh saya ubah.
vstrien
Situasi # 1 tampaknya menjadi jawabannya. Saya pikir pesan kesalahan yang Anda dapatkan berasal dari dalam paket. Dengan kata lain, paket sedang dieksekusi, tetapi tugas di dalamnya membutuhkan lebih banyak izin daripada akun layanan yang diberikan. Anda mungkin tidak harus memberikan izin tingkat administrator ke akun untuk membuatnya berhasil (memberikan izin granular, atau mengubah proses untuk tidak memerlukan izin).
Jon Seigel
Bisakah Anda menambahkan SQL Login (SQL Authentication) ke SQL Server jarak jauh (Server 2)? Jika Anda memiliki opsi itu, Anda dapat menggunakan SQL Login di koneksi SSIS yang digunakan untuk tujuan. Itu berarti Anda harus menggunakan kata sandi untuk mengenkripsi paket, tetapi itu akan menyelesaikan masalah Anda.
Roi Gavish
@Justicator: Mungkin, sebagai pilihan terakhir. Tetapi setiap kali login domain dimungkinkan, saya lebih suka tidak menggunakan SQL Authentication.
vstrien

Jawaban:

5

Pendapat pribadi saya adalah bahwa pilihan # 1 adalah cara untuk pergi. Tetapi saya melihat tidak perlu bagi Anda untuk harus memberikan akses administrator akun domain akun lokal. Sepertinya saya memerlukan akses ke folder dan file tertentu sehingga Anda dapat memberikan pengguna domain akses hanya ke sumber daya yang diperlukan untuk menjalankan paket dengan sukses. Ini dapat dilakukan melalui kotak dialog properti file / folder dan pilih tab keamanan - seharusnya tidak perlu mengaturnya untuk setiap file dan folder karena Anda dapat mengatur izin direktori induk dan mengaturnya untuk menimpa properti anak.

Saya harap ini membantu Anda.

Mr.Brownstone
sumber