none
Mengapa script T-SQL gagal dijalankan ketika berhasil dijalankan di SQL Server Management Studio? RRS feed

  • Diskusi Umum

  • Jawaban
    Masalah ini biasanya disebabkan oleh fakta bahwa keamanan pelaksanaan pekerjaan konteks berbeda dari konteks keamanan ketika Anda secara manual menjalankan skrip di SSMS. Perintah di SQL Server Management Studio dijalankan sebagai login saat ini. Namun secara default setiap langkah pekerjaan berjalan dalam konteks keamanan akun Agen SQL Server Service. Jika SQL Server Agent Service akun berbeda dari account login dan jika tidak memiliki izin yang cukup untuk mengeksekusi query, pekerjaan akan gagal.

    Meskipun Anda dapat memberikan izin SQL Server Agent Service account untuk mengeksekusi query, ini bukan cara terbaik dari perspektif keamanan. Untuk account SQL Server Agen Layanan, dianjurkan untuk memberikan sedikitnya jumlah hak istimewa. Anda tidak dapat membuat SQL Server proxy Agen untuk melaksanakan pekerjaan itu karena untuk langkah pekerjaan T-SQL tidak akan menggunakan proxy SQL Server Agent.
    Untuk langkah pekerjaan Transact-SQL, secara default berjalan di bawah konteks keamanan pemilik pekerjaan dan jika pemilik pekerjaan adalah anggota dari peran server sysadmin tetap, ini berjalan dibawah service account SQL Server Agent.

    Anda dapat menggunakan salah satu dari tiga metode berikut untuk mengatasi masalah ini:
    1. Metode pertama untuk mengatasi masalah ini adalah mengubah pemilik pekerjaan untuk login yang memiliki ijin yang cukup untuk menjalankan script T-SQL tapi pemilik pekerjaan tidak boleh sysadmin.
    2. Metode kedua adalah menentukan "Run as Pengguna" pilihan untuk langkah pekerjaan Transact-SQL dalam hal Anda memiliki beberapa langkah-langkah pekerjaan dan Anda tidak ingin mengubah pemilik pekerjaan sehingga tidak berdampak langkah-langkah pelaksanaan pekerjaan lain. Anda dapat pergi ke opsi Advanced langkah kerja, dan masukan pengguna kepada "Run as User" lapangan. Pastikan Anda seorang sysadmin untuk mengedit pilihan ini.
    3. Metode ketiga adalah bahwa Anda dapat menambahkan pernyataan EXECUTE AS menjelang script T-SQL Anda.

    Sebagai contoh:

    EXECUTE AS USER = 'user_test';
    - Pernyataan akan dijalankan dalam konteks keamanan user_test.
    SELECT * FROM MyTable;
    - Setelah menjalankan pernyataan kembali, konteks keamanan akan diatur ulang ke konteks keamanan standar.


    Microsoft
    Jumat, 03 Juni 2011 06.25