مهدی ولی خانی (ولیخانی) هستم .متولد دوم خرداد سال 63 . فارغ التحصیل رشته نرم افزار کامپیوتر ، مقطع کاردانی ، دانشگاه جامع علمی - کاربردی واحد داده پردازی. در حال حاضر حرفه ی من طراحی و برنامه نویسی وب می باشد . هدف اصلی من از انتخاب رشته نرم افزار کامپیوتر فقط ورود به دنیای طراحی و برنامه نویسی تحت وب بود . در واقع بزرگترین سرگرمی من طراحی و برنامه نویسی می باشد .(چه بهتر که تحت وب باشه!) ساعات زیادی از وقت روزانه من پشت یک کامپیوتر در اتاقم میگذره . به موسیقی زیاد علاقه دارم . دو سبک موسیقی را بسیار می پسندم . موسیقی اصیل ایرانی و موسیقی راک . رنگ مورد علاقه آبی و تیم مورد علاقه پرسپولیسه .

<October 2008>
SunMonTueWedThuFriSat
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
RSS 2.0 | Atom 1.0 | CDF
Google Reader
del.icio.us blog.mehdiVK.net latest Posts
Add to my Yahoo!
Subscribe with Bloglines
Subscribe in NewsGator Online

my Feedster
Add to my AOL
Furl blog.mehdiVK.net latest Posts
Subscribe to Rojo


Total Posts: 159
This Year: 68
This Month: 0
This Week: 0
Comments: 112
newtelligence dasBlog 1.9.6264.0


وبلاگ مهدی ولیخانی
وبلاگ مهدی ولیخانی در رابطه با تکنولوژی دات نت
Saturday, October 04, 2008
پلاگین درج کد در متن وبلاگ برای Windows Live Writer

چندی پیش در این پست به معرفی پلاگین Paste From Visual Studio پرداختم ، با استفاده از VSPaste شما می توانید کدهای خود را به همان شکلی که در VS دیده می شوند در متن پست خود قرار دهید . اما متاسفانه این پلاگین در ویندوز 2003 کار نمی کند ، پلاگین دیگری وجود دارد با نام Insert Code for Windows Live Writer که عملکرد مشابه VSPaste را دارا می باشد . این افزونه بدون هیچ مشکلی بر روی Windows 2003 هم کار می کند . جهت کسب اطلاعات بیشتر و دانلود این پلاگین کلیک کنید.


  (  )  ( Comments [0] | Trackback )
Friday, October 03, 2008
غیر فعال کردن ویژگی Auto Complete فرم های وب

مرورگرها برای تسریع در عمل پر کردن فرم های تحت وب ویژگی Auto Complete را برای TextBox ها پیاده سازی کرده اند ، با استفاده از این ویژگی اطلاعاتی که شما در فرم ها وارد می کنید ذخیره شده و در دفعات بعد مقادیری که در مراحل قبل وارد کرده اید به شما پیشنهاد می شود .

موقعیت هائی پیش می آید که شما تمایل داشته باشید که این ویژگی کاربردی را برای یک یا چند فیلد و یا تمام فیلدهای یک فرم تحت وب غیر فعال کنید . برای غیر فعال کردن این ویژگی برای تمامی TextBox های یک فرم مقدار AutoComplete فرم را Off  قرار دهید ، در صورتیکه تمایل دارید این ویژگی برای یک یا چند TextBox غیر فعال شود مقدار AutoComplete آن TextBox ها را  Off قرار دهید .

در ASP.net هم با ست کردن مقدار Disabled برای AutoCompleteType یک TextBox میتوان ویژگی Auto Complete را برای آن TextBox غیر فعال کرد. البته این ویژگی تنها در IE کار می کند در صورتیکه بخواهیم در سایر مرورگر ها هم فعال باشد باید در Directive صفحه مقدار ClientTarget را UpLevel قرار دهیم .


  (  |  )  ( Comments [0] | Trackback )
Thursday, October 02, 2008
معرفی Packt Publishing ، ناشر کتاب های مرتبط با برنامه نویسی

Packt Publishing نام ناشری است که بصورت اتقاقی با آن آشنا شدم ، این ناشر کار خود را در سال 2004 میلادی با چاپ کتابی با عنوان "Mastering phpMyAdmin for Effective MySQL Management" آغاز کرده است و اکنون در زمینه های مختلف برنامه نویسی کتاب های مختلفی چاپ می کند ، می توانید به بخش دات نت این انتشارات بروید و فهرست کتاب های منتشر شده را مشاهده کنید .


  (  |  )  ( Comments [0] | Trackback )
Wednesday, October 01, 2008
Smush.it سرویسی تحت وب برای کاهش حجم عکس ها

Smush.it نام سرویس تحت وب ی است که توسط Stoyan Stefanov  و  Nicole Sullivan پیاده سازی شده است ، با استفاده از این وب سايت شما می توانید حجم عکس های خود را کاهش دهید . 

امکانات SmushIt بدین شرح است :

1 -
با استفاده Smush.it می توانید عکس های خود را آپلود کنید و عکس های معادل با حجم کمتر را تحویل بگیرید .

2 - با استفاده از Smush.it می توانید آدرس اینترنتی  عکس های مورد نظر خود برای کاهش حجم را داده و عکس های کم حجم شده را تحویل بگیرید.

3 - همچنین این وب سايت یک افزونه مخصوص فایرفاکس هم دارد که با نصب آن می توانید حجم عکس های دلخواه موجود بر روی اینترنت را کاهش دهید .

جهت مشاهده این وب سايت کلیک کنید.


  (  )  ( Comments [1] | Trackback )
Monday, September 29, 2008
ویژوال استودیو 2010

مایکروسافت اطلاعات اولیه ای در رابطه با Visual Studio 2010 , .net Framework 4.0 ارائه داده است که می توانید از طریق لینک های زیر مطالعه کنید:

+ Microsoft Unveils Next Version of Visual Studio and .NET Framework
+ Visual Studio 2010 and .NET Framework 4.0 Overview
+ Visual Studio Team System 2010 Week on Channel 9
+ Microsoft Announces Visual Studio 2010. Developers Respond


  (  |  )  ( Comments [0] | Trackback )
Saturday, September 27, 2008
blog.mehdivk.net وارد سومین سال فعالیت خود شد.

26 ام سپتامبر 2006 اولین پست این وبلاگ با عنوان "یه وبلاگ اونم فقط با یک کلیک" منتشر شد ، امروز 27 ام سپتامبر 2008 است و این وبلاگ وارد سومین سال فعالیت خود می شود . آمار نشون میده در مدت این 2 سال در مجموع 138 پست منتشر شده و 103 نظر در رابطه با مطالب منتشر شده ارسال شده است . به طور متوسط در هر ماه 5 مطلب در این وبلاگ منتشر شده است و می توان گفت بطور متوسط در هر هفته این وبلاگ با یک مطلب جدید بروز شده است . آمار نشان از این دارد که این وبلاگ یک وبلاگ فعال نیست ! همچنین آمار فید برنر میگوید که این وبلاگ در حال حاضر 120 خواننده فید دارد.


  (  |  )  ( Comments [2] | Trackback )
Friday, September 26, 2008
Silverlight 2.0 RC ارائه شد.

دیروز نسخه RC این محصول مایکروسافت ارائه شد ، جهت اطلاعات بیشتر کلیک کنید.


  (  )  ( Comments [0] | Trackback )
Wednesday, September 24, 2008
ResolveUrl و ResolveClientUrl در ASP.net
کلاس Control در ASP.net شامل دو متد ResolveUrl و ResolveCilentUrl می باشد که هر دو این متدها یک ورودی دارند که همانا مسیر یک فایل است ، خروجی متد اول آدرس یک فایل نسبت به Root است و خروجی متد دوم مسیر یک فایل نسبت به شاخه فعلی است .

بطور مثال اگر ما بخواهیم مسیر فایل Detail.aspx  را نسبت به Root دربیارم کافیست از دستور زیر استفاده کنیم :
ResolveUrl("Detail.aspx");

حال اگر بخواهیم مسیر فایل Icon.png را که در شاخه Images می باشد را نسبت به شاخه فعلی بدست آوریم کافیست از دستور زیر استفاده کنیم:
ResolveClientUrl("~/Images/Icon.png");

  (  )  ( Comments [0] | Trackback )
Monday, September 22, 2008
معرفی nAML

NET. Application Modeling Language یا nAML (بخوانید namel) یک زبان وِيژوال برای مدل سازی برنامه های دات نت می باشد که از سوی آقای محمذ اشرف العالم (Mohammad Ashraful Alam) ارائه شده است .
جهت دریافت اطلاعات بیشتر در رابطه با nAML می توانید به صفحه این پروژه در msdn بروید و یا این فایل (فرمت pdf) را که حاوی معرفی این زبان و مثال های مختلفی از این زبان هست را دریافت نمائید.


  (  )  ( Comments [0] | Trackback )
Sunday, September 21, 2008
دانلود فایل در #C

با استفاده از کلاس System.Net.WebClient شما می توانید فایل های مورد نطر خود را از طریق #C دانلود کنید ، بطور مثال در یک سیستم نرم افزاری برای دریافت سرویس پک های یک نرم افزار می توان از روش زیر استفاده کرد .

System.Net.WebClient _client = new System.Net.WebClient();
_client.DownloadFile("http://www.example.com/somefile.exe",@"c:\somefile.exe");

  (  )  ( Comments [0] | Trackback )
Saturday, September 20, 2008
مشکل کنترل منوی ASP.net و مرورگر Safari شرکت اپل ، بیان دو راه حل دیگر

چندی پیش در پستی به بیان عدم نمایش صحیح کنترل منوی ASP.net در مرورگر Safari پرداخنم . در آن پست به بیان یک راه حل کلی پرداختم راه حلی که مشکل تمامی کنترل ها در تمامی پروژه های ASP.net ی که بر روی سرور مورد نظر هستند را رفع می کرد . اما یکی از معایت راه حل ارائه شده این بود که مدیران سرورهای به اصطلاح share امکان اعمال این چنین تغییراتی را بر روی سرور نمی دهند و برای ما که بیشتر برنامه هایمان بر روی سرورهای share اجرا می شوند شاید این روش کارائی نداشته باشد . در این پست قصد دارم 2 روش دیگر را برای رفع این مشکل ارائه کنم که نیازی به compile کردن مجدد dll های موجود بر روی سرور نیست و اصولا با خود سرور کاری ندارد و تغییرات بر روی پروژه اعمال می شود.

روش 1 - اضافه کردن "ClientTarget="UpLevel به Page Directive
با اضافه کردن بخش فوق به Page Directive مشکل فوق برای مرورگر سافاری برطرف می شود . به این نکته توجه داشته باشید که در مرورگر فایرفاکس اگر در یک صفحه همزمان از منو و کنترل TreeView استفاده می کنید و برای رفع مشکل نمایش "ClientTarget="UpLevel  را به Page Directive اضافه کرده اید آنگاه عمل Expand کردن Node ها در کنترل Tree View دیگر عمل نمیکند.

روش 2 - اضافه کردن "ClientTarget="UpLevel  در Code Behind
روش اول هم محدودیتی داشت و آن هم مشکل Expand کردن Node ها در TreeView می باشد پس بهتر است "ClientTarget="UpLevel  را در Code Behind اضافه کنیم ، حال می توانیم شرطی بگذاریم که اگر مرورگر Safari بود "ClientTarget="UpLevel  اضافه شود (تا مشکل برطرف شود) در غیر اینصورت "ClientTarget="UpLevel  اضافه نشود تا مشکلی هم برای کنترل TreeView پیش نیاد چرا که تنها سافاری است که مشکل دارد . برای این کار می توانیم از کد زیر استفاده نمائیم :

Protected Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit
If InStr(Request.ServerVariables("http_user_agent"), "Safari") Then
Page.ClientTarget = "uplevel"
End If
End Sub

  (  )  ( Comments [0] | Trackback )
Thursday, September 18, 2008
scriptaculous کتابخانه ای جاوا اسکریپتی برای کار با رابط کاربری


script.aculo.us نام کتابخانه ای جاوا اسکریپتی است که برای ارتقاء رابط کاربری یک برنامه تحت وب به کار می رود . این کتابخانه  Cross Browser شامل بخش های زیر است:

1 - animation framework
2 - drag and drop
3 - Ajax controls
4 - DOM utilities
5 - unit testing

به وب سايت این کتابخانه سربزنید و حتما دموی های این کتابخانه را مشاهده کنید.


  (  |  )  ( Comments [0] | Trackback )
Sunday, September 07, 2008
CSS attribute selectors ها

یکی از وِیژگی هائی که در CSS 2 اضافه شد و در نسخه سوم نیز گسترش یافت css attribute selector ها هستند ، css attribute selector ها به شما این امکان را میدهند که style های خود را بر اساس مقادیر attribute های تگ های HTML نسبت دهید . فرض کنید میخواهید کد css ی بنویسید که یک آیکون rss به انتهای لینک های اضافه کند که دارای پسوند .rss و باشد ، یا میخواهید به لینک های که مقدار مشخصه title آنها xml است یک آیکون xml اضافه کنید و فونت نوشته را هم تغییر دهید ، کلیه این کارها با استفاده از css attribute selector ها میسر می باشد . در زیر به انواع مختلف استفاده از این ویژگی جالب css خواهیم پرداخت .البته برای تمامی روش های فوق یک روش سنتی هم وجود دارد و آن هم نسبت دادن کلاس خاص به هر المانی است که میخواهیم نوع نمایش خاصی داشته باشد . طبیعتا روش دوم ساده تر و صد البته زمان بر تر و خسته کننده تر از روش اول می باشد .

1- دسترسی به تگ هائی که دارای یک مشخصه هستند:
فرض کنید قرار است یک سری استایل مشخص را برای نمامی تگ هائی که دارای مشخه title هستند نسبت دهیم . کافیست از کد زیر استفاده نمائیم:

[attribue]
        {
              color:brown;
        }
کافیست در کد فوق به جای attribute مقدار title را قرار دهیم . اگر بخواهیم تنها لینک هائی که شامل مشخصه title هستند را هدف قراردهیم  می توانیم از کد زیر استفاده کنیم :
a[attribue]
        {
              color:brown;
        }

2 - برای هدف قراردادن تگ هائی که دارای مشخصه خاصی با یک مقدار مشخص هستند می توانیم از کد زیر استفاده نمائیم:
[attribue=value]
        {
              YOUR CSS
        }
بطور مثال برای تگ های لینکی که دارای مقدار href=http://friendfeed.com هستند می توانیم از کد زیر استفاده نمائیم:
a[href=http://friendfeed.com]
        {
              color:red;
        }

3 - برای هدف قراردادن تگ هائی که شامل یک مشخصه خاص هستند که مقدار این مشخصه حاوی یک کلمه خاص هست:
بطور مثال برای هدف قراردادن  تمامی لینک هائی که در مشخه title آن از کلمه web استفاده شده است می توانیم از کد زیر استفاده نمائیم:
a[title~=web]
        {
              color:red;
        }
توجه داشته باشید که در روش فوق کاراکتر Space جداکننده کلمات از همدیگر می باشد.
در صورتیکه بخواهیم - جداکننده محسوب شود به جای =~ از =| استفاده میکنیم.

4 - برای هدف قراردادن تگ هائی که شامل یک مشخصه خاص هستند که مقدار این مشخصه بک یک عبارت خاص ختم می شود :
به طور مثال با استفاده از کد زیر می توانیم یک آیکون در انتهای لینک های مربوط به فایل های با پسوند mov قرار دهیم .
a[href$='.mov']
        {
              padding-right: 17px;
              background: url(icons/video.png) no-repeat right;
        }

5 - برای هدف قراردان تگ هائی که شامل یک مشخصه خاص هستند که مقدار این مشخصه با یک عبارت خاص شروع می شود:
اگر بخواهیم سناریو فوق را برای لینک هائی که با mailto شروع می شوند پیاده سازی کنیم ، میتوانیم از کد زیر استفاده نمائیم:
a[href ^="mailto:"]
        {
                padding-right: 18px;
                background: url(icons/email.png) no-repeat right;
        }

6 - برای هدف قراردادن تگ هائی که شامل یک مشخصه خاص هستند که مقدار این مشخصه دارای یک عبارت می باشد:
فرض کنید من دوست داشته باشم بقل هر لینکی که href ان حاوی mehdivk هست یک آیکون asp.net قرار دهم ، می توانم از این کد استفاده کنم:
a[href *="mehdivk"]
        {
                padding-right: 17px;
                background: url(icons/aspdotnet.png) no-repeat right;
        }

منابع:
1 - CSS 3 attribute selectors (بخش توسعه دهندگان مرورگر اپرا)
  (  )  ( Comments [0] | Trackback )
Saturday, September 06, 2008
معرفی "Extension Method" ها در C# 3.0

هنگامیکه که سورس یک کلاس موجود نباشد ، وراثت یکی از راه هائی است که به ما کمک می کند تا متدهای مدنظر خود را به یک کلاس اضافه نمائیم ،  با نوشتن ساب کلاس ها و نوشتن متدهای مدنظر در این کلاس ها به این هذف میرسیم ، اما #C امکانی دارد تحت عنوان "Extension Methods" که به ما کمک می کند بدون استفاده از وراثت متدهای جدیدی را به مجموعه متدهای موجود یک کلاس که سورس آن را نداریم اضافه کنیم .

فرض کنید قرار است به کلاس string دات نت متد IsDate را اضافه کنیم ، کار این متد ارزیابی تاریخ بودن و یا نبودن یک رشته می باشد و خروجی یک مقدار bool می باشد .
به قطعه کد زیر توجه کنید :

namespace Utils
{
          public static class DateTimeHelper
                  {
                          public static bool IsDate(this string s)
                                 {
                                      DateTime dt;
                                      return DateTime.TryParse(s, out dt);
                                 }
                  }
}
متد IsDate یک Extension Method می باشد که به کلاس string اضافه شده است . برای استفاده از این متد کافیست که Utils را در کلاسی که قرار است از این متد استفاده کند Import کنیم.

همانطور که در تصویر فوق مشاهده میکنید متد IsDate به فهرست متدهای کلاس string اضافه شده است .توجه داشته باشید که متدهای Extension و کلاسی که این متدها در آن نوشته می شود باید static باشند . Extension Method ها به مانند سایر متدها می توانند هر تعداد پارامتر ورودی داشته باشند اما توجه داشته باشید که اولین پارامتر در واقع مشخص کننده data type ی است که extension متد به آن می پیوندد.

منبع :
1 -  Using Extension Methods
2 -  Extesion Methods

پی نوشت :
وب سايت ExtensionMethod.Net  یک وب سايت است مخصوص همین Extension متد ها می باشد ، شما می توانید متد های خود را با دیگران به اشتراک بگذارید و یا از متدهای دیگران استفاده کنید. این وب سايـت خود را اینگونه معرفی می کند.
ExtensionMethod.NET is a website on which .NET developers download and upload extension methods. It contains many user-rated methods that will expand your code library immediately.

Extension Methods add functionality to existing classes and allow you to expand the .NET framework. This way your favorite functions integrate seamlessly into the framework. They can be written in C# 3.0 or VB.NET 2008.
We invite you to publish your favorite extension methods and download and use others.

  (  )  ( Comments [1] | Trackback )
Sunday, August 31, 2008
Inbox در خوشمزه

نسخه جدید وب سايت خوشمزه چند وقتی است که ارائه شده است . به معنای واقعی کلمه خوشمزه جدید فوق العاده است ، طراحی این نسخه استثنائی است ، یکی از امکانات جالب وجود Inbox است ، با استفاده از این امکان شما می توانید لینک های خود را برای دوستان خود ارسال کنید و بلعکس دوستان شما لینک هائی را برای شما ارسال کنند ، اما جالب نحوه ارسال است ، کافیست در تگ های لینک خود عبارت for:YOUR_FRIEND_USERNAME را وارد کنید مثلا با وارد کردن for:asroone لینک برای نوید کاشانی ارسال می شود. جالب است ؟!
حتما به نسخه جدید خوشمزه سر بزنید و از قابلیت شبکه آن استفاده کنید ، میتوانید در یک یا چند تگ خاص مشترک شوید و هر روز بهترین های این تگ را در بخش مربوطه را مشاهده کنید .


  (  )  ( Comments [1] | Trackback )
Thursday, August 28, 2008
معرفی sp_MSforeachtable و sp_MSforeachdb دو رویه در SQL Server

بعنوان یک توسعه دهنده برايتان موقعيتی پیش آمده است که بخواهید یک دستور را بر روی تمامی جداول یک پایگاه داده اجرا کنید ، و یا دستوری را بر روی تمامی پایگاه های داده موجود اجرا نمائید ؟ راه های مختلفی برای رسیدن به این هدف وجود دارد اما یکی از ساده ترین و صد البته سریع ترین راه ها استفاده از دو فراخوان sp_MSforeachtable و sp_MSforeachdb می باشد . با استفاده از این دو فراخوان می توانید دستورات مورد نظر خود را بر روی کلیه جداول یک پایگاه داده خاص و یا کلیه پایگاه های داده اجرا نمائید . ورودی این دو فراخوان یک رشته است که همانا دستوری است که شما میخواهید اجرا نمائید . در زیر به ذکر دو مثال در رابطه با نحوه استفاده از این دو فرخوان خواهیم پرداخت:

1 - استفاده از sp_MSforeachtable برای اجرای یک دستور بر روی تمامی جداول :
بطور مثال برای بدست آوردن میزان فضائی که هر جدول اشغال کرده است می توانیم از کد زیر استفاده نمائیم:

USE DropThings;
EXECUTE sp_MSforeachtable 'EXECUTE sp_spaceused [?];';


توجه داشته باشید که  [?] در واقع Place Holder ی است برای نام جدول.
خروجی کد زیر برای پایگاه داده DropThings بشکل زیر است :

2 - استفاده از sp_MSforeachdb برای اجرای دستور بر روی تمامی پایگاه های داده :
بطور مثال برای بدست آوردن میزان فضائی که هر پایگاه داده اشغال کرده است می توانیم از کد زیر استفاده نمائیم:

EXECUTE master.sys.sp_MSforeachdb 'USE [?]; EXEC sp_spaceused


[?] در دستور فوق Place Holder ی است برای نام پایگاه داده .
خروجی حاصل از اجرای دستور فوق به شکل زیر می باشد:

منابع :
The undocumented sp_MSforeachtable procedure
The undocumented sp_MSforeachdb procedure
  (  |  )  ( Comments [2] | Trackback )
Friday, August 15, 2008
کتاب جدید کیوان نیری در راه است ، Beginning ASP.NET MVC

آقای کیوان نیری یکی از فعالان عرصه دات نت در تکاپوی نوشتن کتاب جدید خود به نام "Beginning ASP.NET MVC" می باشد ، این کتاب بهمراهی آقای Simone Chiaretta نوشته خواهد شد . این کتاب چهارمین کتاب آقای نیری می باشد ، ایشان پیش از این کتاب های Professional Community Server, Professional Visual Studio Extensibility and Professional Visual Studio 2008 را بهمراه دوستان خود نوشته اند . کتاب دیگری نیز با عنوان "Professional ASP.NET 3.5 MVC" توسط
Rob Conery ، Scott Hanselman و Phil Haack در حال نوشتن است . آرزوی موفقیت های روزافزون را برای آقا کیوان داریم.


  (  )  ( Comments [1] | Trackback )
Thursday, August 14, 2008
فراخوانی دستورات سیستمی از طریق 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 عضو باشد.
  (  |