Langkah Pekerjaan SQL dijalankan sebagai akun sql yang berbeda

11

Saya ingin tahu bagaimana mengatur langkah pekerjaan SQL untuk dieksekusi sebagai akun login SQL yang berbeda. Tampaknya saya perlu menyiapkan Akun Proksi Baru yang memerlukan kredensial yang ada. Ketika saya membuat kredensial, satu-satunya pilihan saya adalah menggunakan kredensial Windows Login.

Pekerjaan yang saya coba jalankan ada di bawah. Ada pernyataan tambahan lainnya tetapi ketika saya mengatur langkah pekerjaan untuk dijalankan sebagai login SQL gagal.

insert into [dbo].[TableA]
SELECT 
       ss.[Ref_ID]
      ,mm.[studentID]
      ,mm.[studentPersonID]
      ,mm.[studentFirstname]
  FROM [dbo].[TableB] mm
  left outer join [dbo].[TableC] ss on ss.parentPersonID=mm.parentPersonID and mm.studentPersonID = ss.studentPersonID
  where ss.Ref_ID is not null;

Ketika ini dijalankan melalui Langkah Pekerjaan SQL itu gagal.

Executed as user: an_admin_account. Access to the remote server is denied because the current security context is not trusted. [SQLSTATE 42000] (Error 15274).  The step failed.

Saya tidak jelas mengapa ini mencoba mengakses server jauh ketika semua tabel ini ada di db lokal.

Geoff Dawdy
sumber
Langkah kerja SQL sudah memiliki koneksi ke instance SQL. Jadi, Anda perlu mengubah konteks keamanan yang ada, daripada membuat koneksi baru dengan kata sandi. Jika Anda ingin membuat koneksi baru, Anda bisa menggunakan perintah sqlcmd, atau skrip PowerShell, yang kemudian bisa menggunakan login SQL dan kata sandi sebagai parameter dalam skrip. Tetapi Anda harus mempertimbangkan apa yang perlu Anda lakukan, dan apakah proc yang disimpan dengan konteksnya sendiri sudah cukup.
Rob Farley

Jawaban:

15

Jika Anda mengonfigurasi langkah pekerjaan T-SQL, buka Halaman Lanjutan dan konfigurasikan "Jalankan sebagai pengguna" ke info masuk pilihan Anda. masukkan deskripsi gambar di sini

Jika Anda bekerja dengan jenis langkah pekerjaan lain seperti PowerShell, itu akan memerlukan akun proxy yang harus dikonfigurasi.


sumber
Saya sudah mencoba ini tetapi sekarang pekerjaan gagal mengatakan "Akses ke server jauh ditolak karena konteks keamanan saat ini tidak dipercaya". Namun jika saya menjalankan skrip saat masuk sebagai pengguna, ia dapat menjalankannya dengan baik. Tidak ada server yang ditautkan dalam kueri, jadi saya tidak mengerti mengapa ini merujuk ke server jarak jauh. Adakah pikiran?
Geoff Dawdy
Jika Anda dapat menambahkan ke pertanyaan Anda apa yang sedang dilakukan oleh pekerjaan itu dan kesalahan yang sebenarnya akan membantu kami mengarahkan Anda ke sebuah solusi.
Dalam kasus saya itu mengabaikan pengaturan. Menggunakan SQL 2012.
Miguel Sv
1

Gunakan EXECUTE ASdi awal, atau buat prosedur tersimpan yang dijalankan dalam konteks tertentu.

Rob Farley
sumber
Ini mungkin buruk. Jika Anda ingin memanggil prosedur tersimpan dengan pengguna terbatas, itu bisa REVERT ke hak istimewa sysadmin (atau pemilik pekerjaan). Solusi akan menggunakan cookie.
Jens W.
Prosedur tersimpan yang telah dibuat menggunakan opsi EXECUTE AS akan menangani eskalasi hak istimewa, dan tidak mengizinkan seseorang untuk mengubah sebagian jalannya. Jika tidak ada proc tersimpan yang tersedia, maka menyamar sebagai login akan melakukan trik, seperti dengan EXECUTE AS di awal skrip.
Rob Farley