|
SQL SERVER'DA SİSTEM KOMUTLARI ÇALIŞTIRMAK
SQL Server'daki xp_cmdshell adlı Extended Stored Procedure sistem komutlarının
çalıştırılabilmesini sağlıyor. Extended Stored Procedure'ler (xp) özel olarak
hazırlanmış dış DLL kütüphaneleridir ve normal bir kayıtlı yordamdan (stored
procedure) çok daha fazlasını yapabilirler. Bu yüzden 'genişletilmiş kayıtlı
yordam' olarak adlandırılırlar.
Xp_cmdshell'i çalıştırırken yanına metin halinde gerekli komutları yazmak
yeterlidir. Sonrasında çalıştırılan komutun sonuçları tablo halinde gösterilir.
Sonucun gösterilmemesi için ikinci parametre olarak NO_OUTPUT değeri
kullanılmalıdır. Aşağıdaki komutlar Query Analyzer'da çalıştırıldığında
resimdeki gibi sonuçlar elde edilir.
EXEC xp_cmdshell 'copy c:\dosya1.txt c:\dosya2.txt', NO_OUTPUT
EXEC xp_cmdshell 'ping 127.0.0.1'
EXEC xp_cmdshell 'dir'

Xp_cmdshell yordamı işlemin başarılı olup olmadığı ile ilgili bir sonuç değeri
üretebilir.
DECLARE @komut int
EXEC @komut = xp_cmdshell 'ping www.bilgiteknoloji.net'
IF (@komut = 0)
SELECT 'Komut başarılı olarak uygulandı.'
ELSE
SELECT 'Hata oluştu. Hata kodu: ' + CONVERT(VARCHAR(10), @komut)
output
-----------------------------
Unknown host www.bilgiteknoloji.net.
NULL
(2 row(s) affected)
-----------------------------
Hata oluştu. Hata kodu: 1
(1 row(s) affected)
İşlemin başarılı olması halinde sonuç sıfırdır. Ne var ki, işlemin
gerçekleştirilmiş olması sonucun başarılı olduğunu göstermez. Bilakis içeride
oluşan herhangi bir hata başarısızlık olarak kabul edilecektir. Ping komutu
adrese ulaşamadığında için yukarıdaki işlem başarısız olacaktır.
Serkan ŞAHİNOĞLU
|