چگونه Sessions یک کاربر را در SQL از بین ببریم؟
بسمه تعالی
با سلام و وقت بخیر به شما همراهان همیشگی مجموعه ABLY
دوستان عزیز، این مقاله راجع به Sessions و از بین بردن آن در SQL توسط (SPID) است. مشکلی که اکثراً با اون دست و پنجه نرم می کنند. اما همانطور که می دانید همیشه یک راه حل وجود دارد. بنابراین این آموزش را از دست ندهید و با ما همراه باشید.
بسمه تعالی
با سلام و وقت بخیر به شما همراهان همیشگی مجموعه ABLY
دوستان عزیز، این مقاله راجع به Sessions و از بین بردن آن در SQL توسط (SPID) است. مشکلی که اکثراً با اون دست و پنجه نرم می کنند. اما همانطور که می دانید همیشه یک راه حل وجود دارد. بنابراین این آموزش را از دست ندهید و با ما همراه باشید.
قبل از اینکه جواب این سوال را بدانیم، سوال من از شما این است که "چرا اصلاً می خواهید این کار را انجام دهید؟" چون شخصاً من اینکار را منطقی نمی دانم!
شاید در جواب من بگویید که می خواهیم سرور ما 100 درصد منابع را به خوبی اجرا کند. خب این جواب خوبی نیست!
زیرا در هر صورت ما از این پروسه ها خواستیم که خواسته های ما را انجام دهند و از بین بردن آن ها ایده ی جالبی نیست.
به هر حال گذشته از این نظرات شخصی من طریقه ی از بین بردن Sessions های کاربران در SQL را به شما خواهم گفت.
Sessions چیست؟
اکثر شما می دانید که Sessions چیست. اگر بخواهم Sessions را برای کسانی که تازه با آن آشنا شدند توضیح دهم باید بگویم که وقتی یک کاربر وارد یک سایت و یا یک برنامه می شود یک قسمتی از حافظه برنامه به آن اختصاص داده می شود و آن را بیهوده اشغال می کند.
با استفاده از اسکریپت زیر و SPID (Service Profile Identifier) می توانید Sessions های کاربر را در SQL از بین ببرید:
DECLARE @sqlstring NVARCHAR(max)=''
SELECT @sqlstring = @sqlstring + 'KILL ' + CAST(spid AS VARCHAR(40)) + ';'
FROM sys.sysprocesses
WHERE spid NOT IN (@@spid) -- Exclude current session
AND spid > 50 -- Exclude system spid
PRINT @sqlstring
EXEC sp_executesql @sqlstring
توجه:
اگر میخواهید فقط به سیستم خود دسترسی داشته باشید و دسترسی دیگران به سیستم غیرمجاز باشد، پیشنهاد میکنم که پایگاه داده خود را در حالت (single user mode) تنظیم کنید.
منبع: blog.sqlauthority
منتشر شده در سایت ABLY