خانه SQL Server مدیریت Session های فعال در SQL Server SQL Server امنیت SQL Server نوشته شده توسط: ایمان باقری تاریخ انتشار: ۰۹ بهمن ۱۴۰۰ آخرین بروزرسانی: 11 آذر 1403 زمان مطالعه: 6 دقیقه ۳.۸ (۴) Session های فعال در SQL Server، شما به عنوان کسی که قرار است در یک سازمان بزرگ به عنوان مدیر یا دستیار یک مدیر پایگاه داده مشغول به کار شوید لازم است تا با نکات مربوط به مدیریت Session های فعال آشنا شوید. Session به معنی جلسه نیز می باشد که نشان دهنده هر کانکشنی است که کاربران به دیتابیس متصل می شوند. به عبارت دیگر، اگر شما با Management studio به یک دیتابیس وصل میشوید تا یک کوئری DML را اجرا نمایید در واقع یک یا چند Session را ایجاد نموده اید. همچنین اگر از طریق Store Procedure ها، توابع یا از طریق اپلیکیشن بصورت مستقیم به دیتابیس متصل شوید قطعا چند Session برای شما ایجاد میشود تا DMBS بتواند آنها را مدیریت کند. تمامی Session ها در SQL Server با یک عدد شناسایی میشوند که تخصیص و مدیریت این اعداد با DBMS است. برای درک بهتر مفاهیم آموزش جامع SQL Server را مطالعه کنید. برای آنکه بتوانیم Session های فعال را شناسایی کنیم و نحوه ی عملکرد هر یک را مشاهده کنیم راه های گوناگونی وجود دارد که در ادامه با هر یک از آنها آشنا می شویم. برای اجرای سناریوهای مربوطه از دیتابیس AdventureWorks استفاده شده است. روش اول: استفاده از پراسیجر سیستمی sp_who2 Exec sp_who2 روش دوم: استفاده از DMV سیستمی sys.dm_exec_sessions در کوئری زیر کلیه پردازش های موجود در سیستم را نشان می دهد. SELECT * FROM sys.dm_exec_sessions; اگر بخواهید تنها Session هایی که توسط کاربر ایجاد شده را مشاهده کنید میتوانید با تنظیم پارامتر is_user_process این کار را انجام دهید. SELECT * FROM sys.dm_exec_sessions WHERE is_user_process = 1; روش سوم: استفاده از Activity Monitor یکی دیگر از روش های مشاهده Session های موجود در SQL Server استفاده از Active Monitor می باشد. برای بازکردن Active Monitor می توانید با راست کلیک کردن روی نام Instance در Management Studio استفاده نمایید. ستون User Process با مقادیر ۰ و ۱ به ترتیب نشان دهنده Session های سیستمی و کاربری می باشد. پیشنهاد میکنیم برای درک بهتر مفاهیم دوره کوئری نویسی پیشرفته را مطالعه کنید. روش چهارم: مشاهده شماره Session جاری در Management studio به ازای باز کردن هر Session شماره آن در همان Tab نمایش داده می شود. یا میتوان در قسمت Status Bar پایین نیز این اطلاعات را دریافت نمود. اما روش اسکریپتی برای یافتن شماره Session کنونی با استفاده از دستور زیر می باشد: SELECT @@SPID AS CurrentSPID مبحث Kill نمودن Session های فعال در SQL Server گاهی مشاهده می کنید تمامی کوئری های که قصد اجرای آنرا دارید به کندی انجام می شود و یا یک جدول به علت یک عملیات DML، lock شده است. میتوانید یکسری از Session های باز را Kill کنید تا فرآیند اجرای آنها به اتمام برسد. بعضاً عملیات Kill و Rollback بخودی خود زمان زیادی را صرف می کند و شما نیاز دارید تا ببینید چه میزان از عملیات Rollback انجام گرفته است. برای مشاهده چنین گزارشی می توانید از دستور زیر استفاده نمایید. فرض کنید عملیات Delete را روی جدول SalesOrderDetail اجرا کنیم. delete SalesOrderDetail where SUBSTRING(CarrierTrackingNumber,6,4) between '0000' and '4e1f' and UnitPrice between 1500 and 1560 پس از چند لحظه دستور زیر را اجرا نمایید تا Session مربوطه Kill گردد. KILL 84 KILL 84 with STATUSONLY یافتن Session های فعال در SQL Server و در حال اجرا با توجه به گستردگی برخی از دیتابیس¬های عملیاتی و غیر عملیاتی در سازمان¬های بزرگ مانند بانک¬ها، سازمانهای دولتی، مخابرات و غیره یک مدیر پایگاه داده لازم دارد تا بتواند مدیریت زمان اجرای Session های دیتابیس را انجام دهد. در این اثنا کاربران سیستم با توجه به نیاز خود گزارشاتی را بر روی این دیتابیس ها اجرا می کنند که باعث اختلال در روند سرویس دهی سیستم می¬گردد. یک مدیر پایگاه داده می تواند بوسیله¬ی DMV سیستمی، Session های فعال را مشاهده کند. select * FROM sys.dm_exec_requests همچنین میتوان با استفاده از دستور زیر کوئری های سنگین در حال اجرا (از لحاظ بار پردازشی و هزینه زمانی) را واکشی نمود. SELECT r.session_id , r.status , r.wait_type , r.scheduler_id , SUBSTRING(qt.text, r.statement_start_offset / 2, ( CASE WHEN r.statement_end_offset = -1 THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2 ELSE r.statement_end_offset END - r.statement_start_offset ) / 2) AS statement_executing , DB_NAME(qt.dbid) AS DatabaseName , OBJECT_NAME(qt.objectid) AS ObjectName , r.cpu_time , r.total_elapsed_time , r.reads , r.writes , r.logical_reads , r.plan_handle FROM sys.dm_exec_requests AS r CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS qt ORDER BY r.scheduler_id , r.status , r.session_id سخن پایانی Session های فعال در SQL Server، برای آنکه بتوانیم جلسه های فعال را شناسایی کنیم و نحوه ی عملکرد هر یک را مشاهده کنیم راه های مختلفی وجود دارد که در این مقاله به این راه ها با استفاده از مثال عملی توضیح داده شده است. ما در نیک آموز منتظر نظرات ارزشمند شما درباره این مقاله هستیم. چه رتبه ای میدهید؟ میانگین ۳.۸ / ۵. از مجموع ۴ اولین نفر باش دانلود مقاله مدیریت Session های فعال در SQL Server فرمت PDF 5 صفحه حجم 1 مگابایت دانلود مقاله معرفی نویسنده مقالات 6 مقاله توسط این نویسنده محصولات 14 دوره توسط این نویسنده ایمان باقری ایمان باقری بیش از 10 سال است که بصورت حرفهای با SQL Server کار میکند. و مدرس دورههای SQL Server در نیک آموز میباشد. مشاور و متخصص در هوش تجاری و SQL Server توسعه دهنده داشبورد های مدیریتی شرکت سام سرویس (سامسونگ) طراحی و توسعه سیستم انبار داده حوزه بانکی طراحی و پیاده سازی سیستم های تحلیلی و گزارشی معرفی محصول مسعود طاهری دوره آموزش امنیت در SQL Server 2022 7.000.000 تومان 4.200.000 تومان مقالات مرتبط ۰۲ آبان SQL Server ابزار Database Engine Tuning Advisor؛ مزایا، کاربردها و روش استفاده تیم فنی نیک آموز ۱۵ مهر SQL Server معرفی Performance Monitor ابزار مانیتورینگ SQL Server تیم فنی نیک آموز ۱۱ مهر SQL Server راهنمای جامع مانیتورینگ بکاپ ها در SQL Server تیم فنی نیک آموز ۰۸ مهر SQL Server Resource Governor چیست؟ آشنایی با نحوه پیکربندی و اهمیت های آن تیم فنی نیک آموز دیدگاه کاربران لغو پاسخ دیدگاه نام و نام خانوادگی ایمیل ذخیره نام، ایمیل و وبسایت من در مرورگر برای زمانی که دوباره دیدگاهی مینویسم. موبایل برای اطلاع از پاسخ لطفاً مرا با خبر کن ثبت دیدگاه Δ