دیباگ کردن Stored Procedure

ما خیلی راحت میتوانیم نرم افزارهایNet. خودمان را با استفاده از یک دیباگر،دیباگ کنیم. در این مقاله نحوه ی دیباگ کردن Stored Procedure را یاد خواهید گرفت.

دیباگ کردن Stored Procedure

نرم افزارهای .Net فایل PDB (Program Debug Database) خودشان را دارند که از آن به عنوان محلی برای ذخیره سازی اطلاعات و تنظیمات دیباگ استفاده میکنند. تمام این ها درباره نرم افزارهای .Net بود،اما آیا ما میتوانیم stored procedure های خودمان را نیز دیباگ کنیم؟ جواب مثبت است، ما میتوانیم stored procedure های خودمان را دیباگ کنیم. باید ببینیم چطوری میشه این کار رو انجام داد.

پیش زمینه

Stored Procedure ها به دلیل ویژگی هایی که دارند به اندازه کافی محبوب هستند، ویژگی هایی مثل امنیت بالا، امکان تفکیک پذیری(جداسازی) بین نرم افزار و عملکرد داده ها، بهبود در کارایی برنامه (بوسیله ی ایجاد ارتباطات کمتر با پایگاه داده)، اساسا آنها فقط یک بار و در یک جا پردازش می شوند. SPها الان در بین توسعه دهندگان و DBA ها محبوب تر شده اند، اما وقتی که ما یک SP بزرگ مینویسیم چگونه باید آن را دیباگ کنیم؟ یا اگر درست کار میکنند، چگونه باید آنها را تست کنیم ؟

پس اینجاست که نیاز پیدا میکنیم تا بتوانیم Stored Procedureها را دیباگ کنیم، بیاید ببینیم چطوری باید انجامش بدیم.

قدم به قدم

اولین قدم این است که یک SP بسازیم (اگر شما از قبل یک SP دارید میتوانید از انجام این مرحله صرف نظر کنید)،  ما اینجا یک SP ساده می سازیم، که یک رکورد را از جدول EMP با یک Id خاص انتخاب میکند، تصویر زیر را مشاهده کنید.

 

2.بعد از اینکه SP با موفقیت ساخته شد، ما آماده ایم تا آن را دیباگ کنیم.چندین روش برای دیباگ SP ها وجود دارد.

      1. با استفاده از SQL Server Management Studio (SSMS)

       2. با استفاده از Visual Studio

دیباگ کردن SP با استفاده از SQL Server Management Studio (با استفاده از نسخه ی2008R2 Express)

SQL 2008 R2-    را باز کنید

   -روی ViewMenu à Object Explorer کلیک کنید

   -روی Connect Database Engine کلیک کنید و نام کاربری و کلمه عبور خود را وارد کنید و روی دکمه ی Connect کلیک کنید.(عکس زیر را مشاهده کنید)

 

     - دیتابیس را باز کنید  و به پوشه ی Stored Procedures که در پوشه یProgrammability قرار دارد بروید.( شما میتوانید SP هایتان را در آنجا مشاهده کنید)

 

   - یک پنجره ی New Query باز کنید.

    - عبارت زیر را تایپ کنید.

Exec [ProcedureName]         

         به جای [ProcedureName] نام SP خود را وارد کنید.

با استفاده از دکمه یF9 دیباگر را روی آن خط قرار دهید.

  - دکمه ی فلش سبز رنگ را برای شروع دیباگ فشار دهید و با استفاده از دکمه ی F11 شما وارد Sp می شوید.

   - شما میتوانید خروجی ها را در پنجره ی local و Call Stack مشاهده کنید.

 

دیباگ کردن با استفاده از Visual Studio

دقیقا به همان روش میتوانید از ویژوال استودیو برای دیباگ SP خود استفاده کنید.

       به ویژوال استودیو بروید و روی دکمه ی connect database کلیک کنید و مراحل زیر را انجام دهید.

        ویرایشگر ویژوال استودیو را باز کنید.

         روی منوی View کلیک کرده و SQL Server Object Explorer را باز کنید( در ورژن های قبل از VS 2012 اسم آن Server Explorer          بود)

 

در قسمت SQL Server Object Explorer روی Data Connections راست کلیک کنید.

Add Connection  را انتخاب کنید.

نام کاربری و کلمه عبور خود را وارد کنید.

روی دیتابیس خود کلیک راست کنید و گزینه های Application Debugging و Allow SQL/CLR Debugging را تیک بزنید. ( عکس زیر را مشاهده کنید)

 

دیتابیس را باز کنید و Stored Procedures را که در داخل پوشه ی Programmability قرار دارد را انتخاب کنید.

روی SP مورد نظر خود راست کلیک کنید و Debug Procedure را انتخاب کنید.

 

حال شما میتوانید دیباگ را شروع کنید.

خطاها

خطاهای مربوط به سطح دسترسی از متداول ترین خطاهایی است که هنگام دیباگ SP ها اتفاق می افتد.

پیام های خطای متداول

در زیر لیستی از پیام های خطای متداول را که در هنگام دیباگ Sp ها اتفاق می افتد را میتوانید مشاهده کنید.

...Unable to start the transact-SQL debugger, could not connect to the Database Engine instance

...Unable to start T-SQL debugging, Could not connect to computer                                        

...Logon failure: Unknown username or bad password                                                                 

...Failed to start debugger, The execute permission was                                                             

...Could not attach to SQL Server process on                                                                               

 

تصویر بعضی از خطاها را میتوانید در زیر مشاهده کنید.

خطای زیر هنگامی رخ میدهد که شما سعی در دیباگ SP ها از راه دور میکنید.

مواردی که میتوان برای جلوگیری از خطاها انجام داد.

1 . اگر شما درحال دیباگ کردن یک SP روی SQL Server Local خودتان هستید پس باید با نام کاربری که نقش sysadmin را دارد وارد شوید، برای اینکه به کاربر نقش sysadmin را بدهید SP زیر را اجرا کنید. ( این SP سیستمی است و از قبل تعریف شده است)

sp_addsrvrolemember '<Login>', 'sysadmin' .2

3. پورت TCP خود را در Windows Firewall و یا هر فایروال دیگری که استفاده میکنید پیکربندی کنید تا بتوانید اشکال زدایی (Debug) کنید.

4 . پورت TCP خود را در Windows Firewall و یا هر فایروال دیگری که استفاده میکنید پیکربندی کنید تا بتوانید دستورات t-SQL به صورت راه دور اشکال زدایی کنید.

 5. پورت های زیر را در هر دو دستگاه ( دستگاهی که SQL Server روی آن نصب است و دستگاهی که به عنوان کلاینت استفاده میشود) باز کنید: TCP 139 , TCP 445 UDP 137 , UDP 138

SqlServer management studio . 6 را به صورت Run as administrator اجرا کنید.

7. دستگاه های Client و Server هر دو باید در یک دامین باشند در غیر این صورت شما باید یک اکانت با همان نام کاربری و کلمه عبور بسازید.                                                                     

دانلود نسخه ی PDF این مطلب