Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

फिक्स:SQL सर्वर (और SQL एज) में "रिकवरी मॉडल SIMPLE होने पर स्टेटमेंट बैकअप लॉग की अनुमति नहीं है"

यदि आपको कोई त्रुटि मिलती है जिसमें लिखा होता है बयान बैकअप लॉग की अनुमति नहीं है जबकि पुनर्प्राप्ति मॉडल सरल है 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 , जिसके परिणामस्वरूप बाद के डेटाबेस डिफ़ॉल्ट रूप से पूर्ण पुनर्प्राप्ति मोड का उपयोग करेंगे।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अधिकतम चुनें (एक्स) शून्य लौट रहा है; मैं इसे 0 कैसे लौटा सकता हूं?

  2. XML डेटा को SQL सर्वर डेटाबेस कॉलम में विभाजित करने का सबसे अच्छा तरीका

  3. SQL सर्वर में SQL टेक्स्ट को रिप्लेस फंक्शन के साथ खोजने और बदलने के लिए शीर्ष 5 तथ्य

  4. SQL सर्वर प्रबंधन स्टूडियो (SSMS) में तालिका पंक्तियों / अभिलेखों को संपादित करें - SQL सर्वर ट्यूटोरियल / TSQL ट्यूटोरियल भाग 18

  5. SQL सर्वर 2012 कॉलम पहचान वृद्धि 7 वीं प्रविष्टि पर 6 से 1000+ तक कूद रही है