SQL Server Rollback single_user
Salam dostlar.
Bügün rastlaşdığım bir problemi və həllini sizlərlə paylaşmaq istədim.
Real baza üzərində səhvən hər birində 300.000-dən çox sətir olan cədvəlləri şərt təyin etmədən join etdim, vəziyyəti bərpa etmək üçün ardıcıl etdiyim birneçə əməliyyat da sistemin tamamilə çökməsinə səbəb oldu. Həmin bazaya 120-dən çox istifadəçi müraciət etdiyi üçün, single_user edib səhvimi düzəltmək istədim. Bu dəfə də baza tamamilə əlçatmaz oldu. Çünki rollback time təyin etməmişdim.
Nə vaxtsa sizin də başınıza bucür pis hadisə gəlsə aşağıdakı addımları izləyin və bazaya olan bütün müraciətləri kəsib təkrar multi_user moduna qayıda bilərsiniz. İşi rahatlaşdırmaq üçün funksiya yazdım, siz sadəcə bazanın adını dəyişib çalışdıra bilərsiniz.
Use Master Go Declare @baza sysname Set @baza = 'bazaninAdi' Declare @spid int Select @spid = min(spid) from master.dbo.sysprocesses where dbid = db_id(@baza) While @spid Is Not Null Begin Execute ('Kill ' + @spid) Select @spid = min(spid) from master.dbo.sysprocesses where dbid = db_id(@baza) and spid > @spid End GO ALTER DATABASE bazaninAdi SET MULTI_USER GO |


Baxılıb: 1203 dəfə
Cavablar ( 2 )
İsmayıl bəy, təcrübəni bölüşdüyünüz üçün təşəkkürlər. Allah razı olsun.
Məlumat üçün təşəkkürlər