यदि आपको कोई त्रुटि मिलती है जिसमें लिखा होता है बयान बैकअप लॉग की अनुमति नहीं है जबकि पुनर्प्राप्ति मॉडल सरल है SQL सर्वर या Azure SQL Edge में डेटाबेस का बैकअप लेने का प्रयास करते समय, ऐसा इसलिए होता है क्योंकि आप उस डेटाबेस पर लेन-देन लॉग का बैकअप लेने का प्रयास कर रहे हैं जो साधारण पुनर्प्राप्ति मॉडल का उपयोग करता है।
इसे ठीक करने के लिए, पुनर्प्राप्ति मॉडल को पूर्ण या बल्क लॉगिंग में बदलें।
त्रुटि
यहां टी-एसक्यूएल कोड का एक उदाहरण दिया गया है जिसके परिणामस्वरूप त्रुटि होती है:
BACKUP LOG Music
TO DISK = '/var/opt/mssql/backups/Music.trn';
परिणाम:
Msg 4208, Level 16, State 1, Line 1 The statement BACKUP LOG is not allowed while the recovery model is SIMPLE. Use BACKUP DATABASE or change the recovery model using ALTER DATABASE.
कारण
जैसा कि उल्लेख किया गया है, त्रुटि तब होती है जब आप साधारण पुनर्प्राप्ति मॉडल का उपयोग करने वाले डेटाबेस पर लेन-देन लॉग का बैकअप लेने का प्रयास करते हैं।
साधारण पुनर्प्राप्ति मॉडल लॉग बैकअप का समर्थन नहीं करता है।
समाधान
इस समस्या को दूर करने के लिए, डेटाबेस पुनर्प्राप्ति मॉडल को FULL
पर सेट करें या BULK_LOGGED
:
USE master;
ALTER DATABASE Music
SET RECOVERY FULL;
वह उदाहरण डेटाबेस को पूर्ण पुनर्प्राप्ति मोड पर सेट करता है।
हालाँकि, आपको अपने लेन-देन लॉग का बैकअप लेना शुरू करने से पहले कम से कम एक पूर्ण डेटाबेस बैकअप करने की भी आवश्यकता होगी। यदि आप ऐसा नहीं करते हैं, तो आपको 4214 त्रुटि मिलेगी, जिसमें कहा गया है कि बैकअप लॉग निष्पादित नहीं किया जा सकता क्योंकि कोई वर्तमान डेटाबेस बैकअप नहीं है ।
यहाँ एक पूर्ण डेटाबेस बैकअप करने का एक उदाहरण दिया गया है:
BACKUP DATABASE Music
TO DISK = '/var/opt/mssql/backups/Music.bak'
WITH FORMAT;
अब लेन-देन लॉग का आवश्यकतानुसार बैकअप लिया जा सकता है:
BACKUP LOG Music
TO DISK = '/var/opt/mssql/backups/Music.trn';
परिणाम:
Processed 3 pages for database 'Music', file 'Music_log' on file 1.
Azure SQL Edge का उपयोग कर रहे हैं?
यदि आप Azure SQL Edge का उपयोग करते हैं, तो आप पाएंगे कि यह समस्या बहुत अधिक होती है। ऐसा शायद इसलिए है क्योंकि SQL एज के साथ बनाए गए डेटाबेस डिफ़ॉल्ट रूप से साधारण पुनर्प्राप्ति मॉडल का उपयोग करते हैं। और ऐसा इसलिए है क्योंकि model
डेटाबेस साधारण पुनर्प्राप्ति मॉडल का उपयोग करता है।
आप पुनर्प्राप्ति मॉडल को कभी भी model
. पर बदल सकते हैं डेटाबेस से FULL
, जिसके परिणामस्वरूप बाद के डेटाबेस डिफ़ॉल्ट रूप से पूर्ण पुनर्प्राप्ति मोड का उपयोग करेंगे।