Saya ingin mengeksekusi EXEC master..xp_cmdshell @bcpquery
Tapi saya mendapatkan kesalahan berikut:
SQL Server memblokir akses ke prosedur 'sys.xp_cmdshell' dari komponen 'xp_cmdshell' karena komponen ini dimatikan sebagai bagian dari konfigurasi keamanan untuk server ini. Administrator sistem dapat mengaktifkan penggunaan 'xp_cmdshell' dengan menggunakan sp_configure. Untuk informasi lebih lanjut tentang mengaktifkan 'xp_cmdshell', lihat "Konfigurasi Area Permukaan" di SQL Server Books Online.
Apakah ada cara untuk mengaktifkan ini, atau menjalankan sesuatu sebelum mengaktifkan fitur?
Bagaimana cara mengatasinya?
sumber
Anda juga dapat menyembunyikan lagi opsi lanjutan setelah mengkonfigurasi ulang:
sumber
Klik kanan server -> Aspek -> Konfigurasi Area Permukaan -> XPCmshellEnbled -> true
sumber
Seperti yang tercantum dalam jawaban lain, triknya (dalam SQL 2005 atau yang lebih baru) adalah mengubah pengaturan konfigurasi global untuk
show advanced options
danxp_cmdshell
ke1
, dalam urutan itu.Menambah ini, jika Anda ingin mempertahankan nilai-nilai sebelumnya, Anda dapat membacanya dari
sys.configurations
pertama, kemudian menerapkannya dalam urutan terbalik di akhir. Kami juga dapat menghindarireconfigure
panggilan yang tidak perlu :Perhatikan bahwa ini bergantung pada SQL Server versi 2005 atau yang lebih baru (pertanyaan awal adalah untuk 2008).
sumber
Sementara jawaban yang diterima akan berfungsi sebagian besar waktu, saya telah menemukan (masih tidak tahu mengapa) beberapa kasus yang tidak. Sedikit modifikasi permintaan dengan menggunakan
WITH OVERRIDE
inRECONFIGURE
memberikan solusiOutput yang diharapkan adalah
sumber
Bahkan jika pertanyaan ini telah diselesaikan, saya ingin menambahkan saran saya tentang itu .... karena sebagai pengembang saya mengabaikannya.
Penting untuk diketahui bahwa kita berbicara tentang MSSQL xp_cmdshell diaktifkan sangat penting untuk keamanan, seperti yang ditunjukkan dalam pesan peringatan:
Membiarkan layanan diaktifkan adalah semacam kelemahan , yang misalnya dalam aplikasi web dapat mencerminkan dan menjalankan perintah SQL dari penyerang. CWE-89 yang populer :
SQL Injection
itu bisa menjadi kelemahan dalam perangkat lunak kami, dan karenanya jenis skenario ini dapat membuka jalan bagi kemungkinan serangan, seperti CAPEC-108 :Command Line Execution through SQL Injection
Saya berharap telah melakukan sesuatu yang menyenangkan, kami Pengembang dan Insinyur melakukan hal-hal dengan kesadaran dan kami akan lebih aman!
sumber
Bagi saya, satu-satunya cara pada SQL 2008 R2 adalah ini:
sumber
Anda dapat melakukannya menggunakan SQLcmd. Anda telah menjalankan perintah berikut.
sumber