Sepertinya saya, Anda tidak menunggu kode SQL dalam jawaban atas pertanyaan Anda. Aspek utama dari pertanyaan Anda adalah aspek keamanan. Apa yang harus Anda lakukan untuk mengimplementasikan kebutuhan Anda tanpa sysadmin hak istimewa dan tanpa lubang keamanan baru? Ini adalah pertanyaan Anda yang sebenarnya, saya pikir.
Saya melihat setidaknya 3 cara untuk menyelesaikan masalah Anda. Tapi pertama-tama penjelasan singkat mengapa hak istimewa sysadmin ada di semua solusi berdasarkan Extended Stored Procedures . Prosedur Tersimpan yang Diperpanjang seperti xp_cmdshell
sangat tua. Mereka ada setidaknya sebelum SQL Server 4.2, Microsoft SQL Server pertama yang berjalan di bawah Windows NT pertama (NT 3.1). Di versi lama SQL Server saya tidak membatasi keamanan untuk menjalankan prosedur seperti itu, tetapi kemudian membuat pembatasan seperti itu. Penting untuk dipahami, bahwa semua tujuan umum prosedur yang memungkinkan memulai proses apa pun di bawah akun SQL Server seperti xp_cmdshell
dan sp_OACreate
harus punya sysadmin pembatasan hak istimewa. Hanya berorientasi tugas prosedur dengan area penggunaan yang jelas dan izin berbasis peran dapat menyelesaikan masalah tanpa lubang keamanan. Jadi ini adalah 3 cara solusi yang saya janjikan sebelumnya:
- Anda membuat akun SQL baru di server SQL Anda dengan sysadmin hak istimewa. Kemudian Anda membuat prosedur tersimpan yang menggunakan beberapa dari Extended Stored Procedures seperti
xp_cmdshell
atausp_OACreate
dan secara teknis menerapkan persyaratan Anda (mengekspor beberapa informasi ke dalam file CSV). Sehubungan dengan EKSEKUSI SEBAGAI Klausul (lihat http://msdn.microsoft.com/en-us/ library/ms188354.aspx ) Anda mengonfigurasi prosedur tersimpan yang dibuat sehingga berjalan di bawah akun dengan sysadmin hak istimewa. Anda mendelegasikan pelaksanaan prosedur ini kepada pengguna dengan beberapa peran SQL, agar lebih fleksibel dari sisi pendelegasian izin. - Anda dapat menggunakan CLR Stored Procedures bukannya
xp_cmdshell
dansp_OACreate
. Anda juga harus menggunakan izin berbasis peran pada prosedur yang dibuat. - Pengguna akhir tidak memanggil secara langsung prosedur tersimpan SQL apa pun yang Anda buat. Ada perangkat lunak (seperti layanan WCF atau Situs Web) yang memanggil prosedur tersimpan SQL Anda. Anda dapat menerapkan ekspor ke file CSV di dalam perangkat lunak ini dan bukan di dalam prosedur tersimpan SQL apa pun.
Dalam semua cara penerapan, Anda harus benar-benar menentukan di mana Anda akan menyimpan sandi dari akun yang Anda akses ke sistem file. Ada berbagai pilihan yang Anda miliki, semua dengan kelebihan dan kekurangan yang sesuai. Dimungkinkan untuk menggunakan peniruan identitas untuk mengizinkan akses ke sistem file dengan akun pengguna akhir. Cara terbaik tergantung pada situasi di lingkungan Anda.