BilgiTeknoloji.net    
b i l g i   t e k n o l o j i   y a z ı l ı m

Ana Sayfa

Marjinal XML Access Pratik Uygulamalar Projeler Ekonometri Dilimiz Editörden Çetrefil İletişim
 

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


http://BilgiTeknoloji.net