Breaking types of locks in SQL
برای شکستن قفلها در SQL Server، میتوانید از چندین روش استفاده کنید. برخی از این روشها عبارتاند از:
- استفاده از دستور KILL SPID برای متوقف کردن فرآیندی که قفل را نگه داشته است. SPID شماره فرآیندی است که میتوانید با دستور sp_who2 یا با نگاه کردن به Activity Monitor در SQL Server Management Studio ببینید. برای مثال، اگر فرآیند با شماره ۵۰ یک قفل Exclusive را بر روی جدول Customers نگه داشته باشد، میتوانید با دستور KILL 50 آن را متوقف کنید و قفل را آزاد کنید.
- استفاده از دستور sp_lock برای مشاهده قفلهای فعال در سیستم و نوع آنها. این دستور به شما میگوید که چه منابع دادهای قفل شدهاند و چه نوع قفلی بر روی آنها اعمال شده است. برای مثال، اگر بخواهید ببینید که چه قفلهایی بر روی جدول Customers وجود دارند، میتوانید با دستور sp_lock @objname = 'Customers' آنها را مشاهده کنید.
https://sariasan.com/featured/sql-exercises/
- استفاده از دستور DBCC OPENTRAN برای مشاهده تراکنشهای باز در سیستم و زمان شروع آنها. این دستور به شما میگوید که چه تراکنشهایی در حال حاضر در سیستم در حال اجرا هستند و چقدر طول کشیدهاند. برای مثال، اگر بخواهید ببینید که چه تراکنشهایی در دیتابیس AdventureWorks در حال حاضر در حال اجرا هستند، میتوانید با دستور DBCC OPENTRAN (AdventureWorks) آنها را مشاهده کنید.
- استفاده از هینتهای NOLOCK یا READUNCOMMITTED برای خواندن دادههای قفل شده توسط تراکنشهای دیگر. این هینتها به شما اجازه میدهند که دادههای تغییر یافته توسط تراکنشهای باز را بخوانید، حتی اگر آن تغییرات هنوز تأیید نشده باشند. این هینتها ممکن است منجر به خواندن دادههای ناسازگار شود و باید با احتیاط استفاده شود. برای مثال، اگر بخواهید جدول Customers را با هینت NOLOCK بخوانید، میتوانید با دستور SELECT ، FROM Customers WITH (NOLOCK) آن را اجرا کنید.
0コメント