2014-10-20 8 views
6

मैं एक पर्ल स्क्रिप्ट पर काम कर रहा हूं जिसका उपयोग यह जांचने के लिए किया जाता है कि कई सेवाएं चल रही हैं या नहीं। इस लक्ष्य को हासिल करने के लिए हमें दूरदराज के विंडोज सर्वर क्वेरी करने के लिए WMI का उपयोग कर रहे:डब्लूएमआई क्वेरी अपूर्ण परिणाम लौटा रही है

my $WMI_locator = Win32::OLE->new('WbemScripting.SWbemLocator'); 
$WMI_locator->{Security_}->{AuthentificationLevel} = 6; 
my $computer = $WMI_locator->ConnectServer($server, 'root\cimv2', $adminuser, $adminpasswd); 
my $services = $computer->ExecQuery('SELECT * FROM Win32_Service', 'WQL', $flag_return_immediately | $flag_forward_only); 

यह कोड स्निपेट पूरी तरह से काम करता है जब मेरी देव लैपटॉप पर मार डाला। हालांकि, जब मैं इसे उत्पादन सर्वर से चलाने की कोशिश करता हूं तो अजीब चीजें होती हैं: कुछ दूरस्थ विंडोज कंप्यूटरों के लिए, मुझे केवल सेवा सूची में आधे मिल सकते हैं।

मैंने इसमें देखा है, और पाया है कि यह समस्या केवल कई सेवाओं (लगभग 150) के साथ सर्वर पर हो रही है, और जिसके लिए औसत पिंग में एक अंतर है (~ 60ms स्थानीय, ~ 215ms उत्पादन पर सर्वर)। ऐसा लगता है कि यह मुद्दा पीएलएल की बजाय डब्लूएमआई से आया है; मैं डॉस कमांड लाइन से सर्वर क्वेरी करने के लिए कोशिश की है, और मैं जब सेवाएं प्राप्त करने के प्रयास में कोई त्रुटि हो रही है, हालांकि सीपीयू की क्वेरी बस ठीक काम करता है:

E:\>wmic /NODE:server /USER:adminuser /PASSWORD:adminpasswd SERVICE GET Caption, State 
Node - server 
ERROR: 
Code = 0x800706be 
Description = The remote procedure call failed. 
Facility = Win32 

E:\>wmic /NODE:server /USER:adminuser /PASSWORD:adminpasswd CPU GET Name, Status 
Name            Status 
Intel(R) Xeon(R) CPU   X5650 @ 2.67GHz OK 
Intel(R) Xeon(R) CPU   X5650 @ 2.67GHz OK 
Intel(R) Xeon(R) CPU   X5650 @ 2.67GHz OK 
Intel(R) Xeon(R) CPU   X5650 @ 2.67GHz OK 

यह देखते हुए कि, मेरा अनुमान है कि मुद्दा नेटवर्क से संबंधित है, लेकिन अब हम ऐसे देश में जा रहे हैं जहां से मैं परिचित नहीं हूं। क्या कोई पैरामीटर है जिसे मैंने याद किया है और/या जिस तरह से मैं चीजें कर रहा हूं उससे कुछ गलत है?

आपके उत्तरों के लिए धन्यवाद!

उत्तर

1

यह त्रुटि लगभग हमेशा (हालांकि विशेष रूप से नहीं) SQL सर्वर के विभिन्न संस्करणों के कई उदाहरणों के कारण होती है। समस्या को कम करने के लिए WMI Diagnostic Utility आज़माएं, इसे इस प्रकार की समस्या में मदद के लिए डिज़ाइन किया गया है।

संबंधित मुद्दे