Ұзақ SQL жұмысы: VPN үзілгенде оны жұмыста ұстап тұрыңыз
Үзілген VPN клиент қатесі жауап бере алмайтын бір сұрақ қалдырады: жұмыс бекітілді ме? Ұзақ тапсырмаларды тұрақты иеге тапсырып, қайталау алдында салыстырыңыз.
Индексті қайта құру басталғаннан жиырма минут өткен соң VPN үзіледі, SQL клиентіңіз үзілген қосылымды көрсетеді, ал айқын сұрақтың сол қатеде жауабы жоқ. Мәлімдеме аяқталды ма, кері қайтарылды ма, әлде сізсіз жұмысын жалғастырды ма? Қайта қосылып қайта жіберу — үш нұсқаның ең нашар, себебі ол бір белгісіз нәтижені екі ықтимал нәтижеге айналдырады. Келесі терезеге дейін жұмысты тұрақты иесі бар нәрсеге көшіріңіз.
Қосылым қатесі сізге не айтпайды
Клиент жағындағы қате клиентті сипаттайды. Ол сокеттің жабылғанын хабарлайды, сервердің транзакциямен не істегенін емес. Мәлімдеме әлі орындалып жатқан болуы мүмкін, байланыс үзілмес бұрын дәл сол сәтте бекітілген болуы мүмкін, немесе сеансы тазартылғанда кері қайтарылған болуы мүмкін. Үшеуі де ноутбугыңызда бірдей хабарлама береді.
Мұны тек сервердің күйі шеше алады. Бірдеңе шешпес бұрын сонда қараңыз.
Жұмысты сервер жағындағы иеге тапсырыңыз
Адамның қадағалауын қажет етпейтін жұмыс үшін дерекқор хосты орындауға ие болсын. SQL Server Agent тапсырмаларды сұраныс бойынша немесе кесте бойынша орындайды және әр іске қосуды жазады, сондықтан тапсырманың өмірлік циклі VPN сеансыңызға тәуелсіз. Тапсырманың сәйкестігіне тапсырма талап ететін дәл сол рұқсаттар қажет, әкімшінің толық интерактивті контексті емес. Сонда ноутбук жұмысты бастап, нәтижелерді оқиды, оны тірі ұстап тұратын процесс болудың орнына.
EXEC msdb.dbo.sp_start_job @job_name = N'nightly-customer-reindex';Agent қолжетімділігі сіз орналастырған шығарылым мен қызметке байланысты. Бұл механизм барлық жерде бар деп есептеудің орнына, платформаңыз іс жүзінде ұсынатын механизмді пайдаланыңыз.
Дерекқорға жақын секіру хосты жолды қысқартады және оны ұстаған жөн, бірақ ол иелік мәселесін өзгертпейді. Желі аяқталғанда сеанс бәрібір аяқталады. Оны бақылау үшін пайдаланыңыз, жұмысты тірі ұстап тұратын нәрсе ретінде емес.
Келесі сеанс оқи алатын жазба қалдырыңыз
Тапсырма атауын немесе идентификаторын, мақсатты дерекқорды және күтетін нәтижені жазып қойыңыз. Дәл сол жазба басқа сеансқа, немесе басқа адамға, қате жауап бере алмаған сұраққа жауап беруге мүмкіндік береді. Онсыз жаңарту туралы бұлыңғыр естелік қалады және тексерудің жолы жоқ.
EXEC msdb.dbo.sp_help_jobhistory @job_name = N'nightly-customer-reindex';Тарих әр қадамның нәтижесі мен уақытын көрсетеді, бұл бір сәттілік жалауынан пайдалырақ. Деректерді өзгертетін тапсырмалар үшін қолданбаның өз тексеруін де қосыңыз: жол саны, бақылау сомасы немесе тапсырма жазған күй жолы. Екі тәуелсіз жазба ғана қайталауды қауіпсіз етеді, және жазылған тапсырма тарихы солардың біріншісі.
Қайта жібермес бұрын салыстырыңыз
Бақылаушы қосылым жоғалғанда, басқасын бастамас бұрын бар іске қосуды табыңыз. Оның қадамдарының нәтижелерін оқып, жұмыстың бекітілгенін, ішінара аяқталғанын немесе мүлде басталмағанын анықтаңыз. Содан кейін ғана жұмыс ағыны белгілеген қайталау ережесін қолданыңыз, өйткені соқыр қайта жіберу жүктемені екі еселеуі немесе екінші рет жарты жолда сәтсіз аяқталуы мүмкін.
Тұрақты иені және тексерілетін нәтижені сақтаңыз, сонда қысқа қатынау ақауы болжам емес, қолайсыздыққа айналады. Бұл — бүкіл дизайн мақсаты: жұмыс оны сұраған қосылымнан ұзақ өмір сүруі керек.