Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Mengekspor hasil kueri ke file dengan cepat

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 atau sp_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 dan sp_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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Replikasi subset data yang difilter:Gabungkan atau Replikasi transaksional?

  2. fungsi sql rekursif dengan logika rollup?

  3. Di SQLServer 2012 TSQL, apa perbedaan menggunakan XML RAW, XML AUTO dan XML PATH

  4. Cari tahu skema SQL Server default untuk sesi

  5. cara mengkonfigurasi file konfigurasi hibernasi untuk sql server