sql सर्वर मेमोरी काउंटर प्राप्त करने और मान दिखाने के लिए शक्तियां


9

मैं निम्नलिखित SQL सर्वर काउंटर पर कब्जा करने के लिए एक पॉवरशेल स्क्रिप्ट लिख रहा हूं:

SQL सर्वर: मेमोरी मैनेजर: कुल सर्वर मेमोरी (KB)

SQL सर्वर: मेमोरी मैनेजर: लक्ष्य सर्वर मेमोरी (KB)

मेरी मशीन में SQL सर्वर के 3 उदाहरण हैं, इसलिए मैं चाहता हूं कि यह स्क्रिप्ट सभी काउंटरों को गतिशील रूप से कैप्चर करे और केवल 1 नमूने के लिए रिपोर्ट करें। मैंने निम्नलिखित लिखने की कोशिश की:

Get-counter -List *SQL*Memory* | Select paths, counter | format-list # doesn't display full list

Get-counter -List *SQL*Memory* | Select paths, counter | where {_.counter -like "*server memory*"} |format-list # displays nothing

अंततः मैं इसे कई सर्वरों पर -computernameपैरामीटर के साथ चलाना चाहता हूं और इसलिए मैं चाहता हूं कि यह गतिशील रूप से कब्जा करे।

क्या कोई मुझे याद रखने में मदद कर सकता है? निम्नलिखित सटीक स्क्रिप्ट है जो मैं चला रहा हूं:

Function checkTransactionsPerSecond([string] $Hostname )
{ 
    (Get-Counter -ListSet "*Databases").Counter | Where {$_ -like "*\Transactions/sec"} #this returns nothing
#   $listofmetrics = (Get-Counter -ListSet "*Databases").Counter | Where {$_ -like "*\Transactions/sec"}
#   $listofmetrics | Get-Counter
}

clear


foreach ($Hostname in Get-Content "D:\TEMP\machines.txt")
{
    Write-Host $Hostname
    checkTransactionsPerSecond($Hostname) 
}

अग्रिम में धन्यवाद

जवाबों:


7

हारून बर्ट्रेंड ने उस पर एक अच्छी पोस्ट लिखी जो बहुत विस्तृत है ... मैं प्रदर्शन काउंटर डेटा एकत्र करने के लिए पॉवरशेल का उपयोग कैसे करता हूं

फिर लेर्टे जूनियर के पास एक सरल चल रहा है कि कैसे वह एक साधारण-टॉक लेख: गैदरिंग पर्फोमन डेटा विद पॉवरशेल में काउंटरर्स को पाता है । यह वह जगह हो सकती है जहां आप शुरू करना चाहते हैं। यह कुछ cmdlets है जो वह एक विशेष उदाहरण के लिए काउंटरों पर कब्जा करने के लिए उपयोग करता है जो मुझे विश्वास है।

देखें कि क्या यह आपकी जरूरत है:


$listofmetrics = (Get-Counter -ListSet "*Databases" -ComputerName $hostname).Counter | Where {$_ -like "*\Transactions/sec"}
$listofmetrics | Get-Counter

इसके लिए धन्यवाद ... लेकिन मुझे जो मुख्य समस्या आ रही है, वह काउंटरों पर अतिरिक्त फ़िल्टर जोड़ रहा है जैसे अगर मैं निम्नलिखित चलाऊं: $ listOfMetrices = (Get-Counter -ListSet "* डेटाबेस" पथ-जैसे "* \ लेनदेन / सेकंड"}) $ listOfMetrices | get-counter यह मुझे डेटाबेस श्रेणी के तहत सभी काउंटर दिखाता है ... लेकिन जो मैं वास्तव में देखना चाहता हूं वह प्रत्येक डेटाबेस के लिए लेनदेन / सेकंड है। कृपया मदद करें
Manjot

समायोजित उत्तर।

धन्यवाद शॉन, मैंने आपके द्वारा अपडेट किए गए कोड का उपयोग करने की कोशिश की। लेकिन, यह अब किसी भी काउंटर को खोजने में सक्षम नहीं है। (Get-Counter -ListSet "* डेटाबेस")। काउंटर | जहाँ "$ _-like" * \ Transactions / sec "} को कोई काउंटर नहीं मिलता है। आपके समय के लिए धन्यवाद
मनजोत ३१'११

वास्तव में? आप किस SQL ​​सर्वर के साथ काम कर रहे हैं? मैंने केवल एक विंडो सर्वर 2008 R2, SQL सर्वर 2008 R2 पर यह कोशिश की।

1
मैंने अपने विंडो सर्वर 2003, एसक्यूएल 2005 पर भी कोशिश की थी और इसमें: \ SQLServer: डेटाबेस (*) \ Transactions / sec

0

इसकी जांच करें:

$listofmetrics = Get-Counter -ListSet "*Databases" | Get-Counter -MaxSamples 1 | Select -ExpandProperty CounterSamples | Where {$_.path -like "\Transactions/sec"} | Select Path, CookedValue

यह डेटाबेस और उनके संबंधित \ Transactions / sec की एक सूची का उत्पादन करेगा। मुझे खोज की शुरुआत में अपनी तरफ से त्रुटियाँ हो रही हैं, लेकिन मुझे लगता है कि यह एक अनुमति मुद्दा है। अन्यथा यह एक सौंदर्य की तरह काम करता है। आप इसे साफ करने के लिए रेगेक्स का उपयोग कर सकते हैं यदि आप चाहें :)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.