Uzun SQL işi: VPN kəsiləndə onu işlək saxlayın
VPN kəsildikdə müştəri xətası cavab verə bilməyən bir sual qalır: iş təsdiqləndimi? Uzun işləri davamlı sahibə həvalə edin və təkrar cəhddən əvvəl uzlaşdırın.
VPN indeks yenidənqurmasının iyirminci dəqiqəsində kəsilir, SQL müştəriniz qırılmış bağlantı göstərir və aşkar sualın o xətada cavabı yoxdur. Bəyanat bitdi, geri qayıtdı, yoxsa sizsiz işləməyə davam etdi? Yenidən qoşulub yenidən göndərmək üç variantın ən pisi, çünki bir qeyri-müəyyən nəticəni iki mümkün nəticəyə çevirir. Növbəti pəncərədən əvvəl işi davamlı sahibi olan bir şeyə köçürün.
Bağlantı xətasının sizə demədiyi şey
Müştəri tərəfindəki xəta müştərini təsvir edir. O, soketin bağlandığını bildirir, serverin tranzaksiya ilə nə etdiyini yox. Bəyanat hələ də icra oluna bilər, link ölməzdən az əvvəl təsdiqlənmiş ola bilər və ya sessiyası təmizlənərkən geri qayıtmış ola bilər. Üç hal da noutbukunuzda eyni mesajı verir.
Yalnız serverin vəziyyəti bunu həll edə bilər. Nəyəsə qərar verməzdən əvvəl ora baxın.
İşi server tərəfindəki sahibə həvalə edin
İnsan nəzarəti tələb etməyən işlər üçün icranı verilənlər bazası hostuna verin. SQL Server Agent işləri tələb üzrə və ya cədvəl üzrə işlədir və hər icranı qeyd edir, beləliklə işin həyat dövrü VPN sessiyanızdan asılı olmur. İşin kimliyinə tapşırığın tələb etdiyi dəqiq icazələr lazımdır, administratorun tam interaktiv konteksti yox. Sonra noutbuk işi başladır və nəticələri oxuyur, onu həyatda saxlayan proses olmaq əvəzinə.
EXEC msdb.dbo.sp_start_job @job_name = N'nightly-customer-reindex';Agent-in mövcudluğu yerləşdirdiyiniz buraxılışdan və xidmətdən asılıdır. Bu mexanizmin hər yerdə olduğunu güman etmək əvəzinə platformanızın həqiqətən təqdim etdiyi mexanizmdən istifadə edin.
Verilənlər bazasına yaxın jump host yolu qısaldır və faydalıdır, lakin sahiblik sualını dəyişmir. Şəbəkə bitəndə sessiya da bitir. Ondan müşahidə üçün istifadə edin, işi həyatda saxlayan şey olmaq üçün yox.
Növbəti sessiyanın oxuya biləcəyi bir qeyd buraxın
İş adını və ya identifikatorunu, hədəf verilənlər bazasını və gözlədiyiniz nəticəni qeyd edin. Məhz bu qeyd başqa sessiyanın və ya başqa bir şəxsin xətanın cavab verə bilmədiyi suala cavab verməsini təmin edir. O olmadan əlində yeniləmə haqqında qeyri-müəyyən bir xatirə qalır və yoxlamağa yol olmur.
EXEC msdb.dbo.sp_help_jobhistory @job_name = N'nightly-customer-reindex';Tarixçə hər addım üzrə nəticəni və vaxtı göstərir ki, bu da tək bir uğur bayrağından faydalıdır. Məlumatı dəyişən tapşırıqlar üçün tətbiqin öz yoxlamasını da əlavə edin: sətir sayı, yoxlama cəmi və ya işin yazdığı status sətri. İki müstəqil qeyd təkrar cəhdi təhlükəsiz edir və qeydə alınmış iş tarixçəsi onların birincisidir.
Yenidən göndərməzdən əvvəl uzlaşdırın
Müşahidə edən bağlantı yoxa çıxanda, yenisini başlatmazdan əvvəl mövcud icranı tapın. Onun addım nəticələrini oxuyun və işin təsdiqləndiyini, qismən tamamlandığını və ya heç başlamadığını qərarlaşdırın. Yalnız bundan sonra iş axınının müəyyən etdiyi təkrar qaydasını tətbiq edin, çünki kor-koranə təkrar göndərmə yükləməni ikiqat edə və ya ikinci dəfə yarıda uğursuz ola bilər.
Davamlı sahibi və yoxlanıla bilən nəticəni saxlayın, o zaman qısa giriş nasazlığı təxmin deyil, sadəcə narahatlıq olur. Bütün dizayn məqsədi budur: iş onu tələb edən bağlantıdan daha uzun yaşamalıdır.