وقتی با یک Database کار دارید اما کاربران آن را رها نمی کنند
سه شنبه, ۲۴ مرداد ۱۳۹۶، ۰۹:۱۵ ق.ظ
فرض کنید می خواهید یک backup را روی یک database در حال کار restore کنید. اما کاربران زیادی به آن وصل هستند و به زبان خوش هم از آن جدا نمی شوند
چطور می توانید از دست آنها خلاص شوید؟
خب اگر تعداد آنها کم باشد می توانید از activity monitor پروسس مربوط به آنها را یکی یکی متوقف کنید یا از طریق دستور
EXEC sp_who2
و بعد هم
KILL <SPID>
پروسس های ناخواسته را حذف کنید
اما اگر تعداد این پروسسها زیاد باشد نیاز به راه حل بهتری دارید.
یک راه این است که دیتابیس را offline و بعد online کنید به این امید که پیش از آن که کاربران دوباره به دیتابیس وصل شوند شما کارتان را انجام داده باشید.
اما راه حل اساسی و منطقی این معضل این است که دیتابیس را از دسترس کاربران عادی خارج کنید:
ALTER DATABASE
DatabaseName SET RESTRICTED_USER WITH ROLLBACK IMMEDIATE
نهایتا وقتی خواستید به حالت عادی برگردید:
ALTER DATABASE DatabaseName SET MULTI_USER
۹۶/۰۵/۲۴