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.

---------------------- KOD ----------------------
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 
Səs: +10. Bəyənilsin Zəifdir

Baxılıb: 1203 dəfə

Cavablar ( 2 )

  1. İsmayıl bəy, təcrübəni bölüşdüyünüz üçün təşəkkürlər. Allah razı olsun.

  2. Məlumat üçün təşəkkürlər

Cavab yazın