فراخوانی دستورات سیستمی از طریق SQL ، استفاده از xp_cmdshell
SQL server به شما این امکان را میدهد که بتوانید دستورات سیستمی را از طریق SQL اجرا کرده و احیانا بر روی خروجی های حاصل از اجرای این دستورات پردازش های مورد نظر خود را انجام دهید .با استفاده از xp_cmdshell شما قادر خواهید بود کلیه دستورات سیستمی را فراخوانی کنید .
فعال سازی مجوز استفاده از xp_cmdshell در SQL Server
در نسخه 2000 ، xp_cmdshell بصورت پیشفرض فعال است . اما به دلیل اینکه فعال بودن این امکان برای همه خطرات جبران ناپذیری در پی دارد لذا تنها کاربرانی که در گروه sysadmin هستند می توانند از این امکان استفاده کنند. در صورتیکه کاربر عضو نباشد و اقدام به اجرای این دستور کند خطای زیر را مشاهده می کند.
Msg 15281, Level 16, State 1, Procedure xp_cmdshell, Line 1 SQL Server blocked access to procedure 'sys.xp_cmdshell' of component 'xp_cmdshell' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'xp_cmdshell' by using sp_configure. For more information about enabling 'xp_cmdshell', see "Surface Area Configuration" in SQL Server Books Online.
در نسخه 2005 ، xp_cmdshell بصورت پیشفرض فعال نیست ، برای فعال کردن دو راه وجود دارد:
1- فعال کردن از طریق اجرای command :
در این روش برای فعال کردن باید دستورات زیر را اجرا نمائید:
EXEC sp_configure 'show advanced options', 1
RECONFIGURE
EXEC sp_configure 'xp_cmdshell', 1
RECONFIGURE
2- فعال سازی از طریق SQL Server 2005 Surface Area Configuration
برای فعال سازی بر روی Start کلیک کرده و در بخش All Programs به Microsoft SQL Server 2005 و سپس به زیر شاخه Configuration Tools بروید ، حال گزینه SQL Server Surface Area Configuration بروید . در پنجره باز شده بر روی گزینه Surface Area Configuration for features کلیک کرده و در پنجره باز شده در زیر شاخه Database Engine بر روی آیتم xp_cmdshell کلیک کرده و آیتم Enable xp_cmdshell را تیک بزنید و بر روی Apply و سپس OK کلیک نمائید. حال xp_cmdshell آماده استفاده است و شما می توانید با فراخوانی این SP دستورات سیستمی را از طریق xp_cmdshell اجرا نمائید.در زیر تصویر صفحه مربوطه را مشاهده می فرمائید:
مثال :
EXEC master..xp_cmdshell 'dir c:\'
در نظر داشته باشید که کاربری میتواند از این SP استفاده کند که در گروه sysadmin عضو باشد.