एसक्यूएल सर्वर 2005 रखरखाव योजना डीबीसीसी चेकडीबी के लिए गलत डेटाबेस का उपयोग क्यों करती है?

यह एक समस्या है जिसे मैंने अपने अलावा अन्य लोगों को देखा है, और मुझे एक अच्छी व्याख्या नहीं मिली है।

आइए मान लें कि आपके पास डेटाबेस की जांच करने के लिए एक रखरखाव योजना है, ऐसा कुछ:

USE [MyDb]
GO
DBCC CHECKDB with no_infomsgs, all_errormsgs

यदि आप कार्य निष्पादित करने के बाद अपने लॉग में देखते हैं, तो आप ऐसा कुछ देख सकते हैं:

08/15/2008 06:00:22,spid55,Unknown,DBCC CHECKDB (mssqlsystemresource) executed by NT AUTHORITY\SYSTEM found 0 errors and repaired 0 errors. Elapsed time: 0 hours 0 minutes 0 seconds.
08/15/2008 06:00:21,spid55,Unknown,DBCC CHECKDB (master) executed by NT AUTHORITY\SYSTEM found 0 errors and repaired 0 errors. Elapsed time: 0 hours 0 minutes 0 seconds.

MyDb की जांच करने के बजाय, यह मास्टर और msssqlsystemresource की जांच की गई।

क्यूं कर?

मेरा कामकाज इस के साथ एक एसक्यूएल सर्वर एजेंट नौकरी बनाना है:

dbcc checkdb ('MyDb') with no_infomsgs, all_errormsgs;

वह हमेशा ठीक काम करता है।

08/15/2008 04:26:04,spid54,Unknown,DBCC CHECKDB (MyDb) WITH all_errormsgs no_infomsgs executed by NT AUTHORITY\SYSTEM found 0 errors and repaired 0 errors. Elapsed time: 0 hours 26 minutes 3 seconds.
0
ro fr bn

3 उत्तर

यदि आप रखरखाव योजना का उपयोग कर रहे हैं तो आप शायद चेक डेटाबेस अखंडता कार्य का उपयोग बंद कर देंगे। यदि आप वास्तव में टी-एसक्यूएल में लिखे गए रखरखाव को चलाने के लिए चाहते हैं तो उसे नौकरी में एक कदम का उपयोग करके चलाएं, रखरखाव योजना में नहीं और उपरोक्त कोड ठीक काम करेगा। स्टू की तरह कहा गया है कि गो बयान क्लाइंट निर्देश एक एसक्यूएल कीवर्ड नहीं है और केवल आईएसक्ल, डब्ल्यूएसक्यूएल, ओएसक्ल, आदि, क्लाइंट और एसक्यूएल एजेंट द्वारा सम्मानित किया जाता है। मुझे लगता है कि यह डीटीएस पैकेज में काम करता है। जाहिर है, डीटीएसएक्स में नहीं, हालांकि।

0
जोड़ा

आपके पास एक डेटाबेसबेस अखंडता कार्य है और आपने इसे डबल-क्लिक किया है, यह MyDb का चयन करता है और जब योजना चलता है तो यह केवल मास्टर की जांच करता है ?? अजीब। क्या आप वाकई एक और योजना नहीं चल रहे हैं?

0
जोड़ा

शुरुआत करने वालों के लिए, हमेशा याद रखें कि जाओ SQL कीवर्ड नहीं है; यह केवल एक बैच विभाजक है जो (आमतौर पर) क्लाइंट द्वारा लागू/मान्यता प्राप्त है, सर्वर नहीं। तो, संदर्भ और ग्राहक के आधार पर, वास्तव में कोई गारंटी नहीं है कि मौजूदा डेटाबेस बैचों के बीच संरक्षित है।

0
जोड़ा