में खुले/सक्रिय कनेक्शन की कुल संख्या निर्धारित करने के लिए कैसे करें मेरा PHP/एमएस एसक्यूएल सर्वर 2005/जीत 2003 आवेदन कभी-कभी बहुत ही उत्तरदायी हो जाता है, स्मृति/सीपीयू उपयोग स्पाइक नहीं होता है। अगर मैं एसक्यूएल प्रबंधन स्टूडियो से कोई नया कनेक्शन खोलने का प्रयास करता हूं, तो यह सिर्फ खुले कनेक्शन संवाद बॉक्स पर लटकता है। कैसे सक्रिय कनेक्शन एमएस एसक्यूएल सर्वर की कुल संख्या deterime 2005एमएस एसक्यूएल सर्वर 2005
उत्तर
यह प्रत्येक डीबी प्रति कनेक्शन की संख्या पता चलता है:
SELECT
DB_NAME(dbid) as DBName,
COUNT(dbid) as NumberOfConnections,
loginame as LoginName
FROM
sys.sysprocesses
WHERE
dbid > 0
GROUP BY
dbid, loginame
और यह कुल देता है:
SELECT
COUNT(dbid) as TotalConnections
FROM
sys.sysprocesses
WHERE
dbid > 0
आप तो अधिक जानकारी की आवश्यकता है, चलाएं:
sp_who2 'Active'
नोट: SQL सर्वर खाते का उपयोग 'sysadmin' भूमिका की आवश्यकता है (अन्यथा यह केवल एक पंक्ति और परिणाम के रूप में 1 की गणना करेगा)
यदि आपका PHP ऐप कई SQL सर्वर कनेक्शन खोल रहा है, तो , जैसा कि आप जानते हैं, आपको अपने ऐप के डेटाबेस कोड में कोई समस्या है। इसे कनेक्शन के उपयोग और कनेक्शन पूलिंग का उपयोग करने के बाद उन कनेक्शनों को जारी/डिस्पोजे करना चाहिए। यहाँ विषय पर एक सभ्य लेख के लिए एक नज़र ...
http://www.c-sharpcorner.com/UploadFile/dsdaf/ConnPooling07262006093645AM/ConnPooling.aspx
@jwalkerjr उल्लेख किया है, आप कोड में कनेक्शन के निपटान किया जाना चाहिए (यदि कनेक्शन पूलिंग सक्षम किया गया है, वे तो बस कनेक्शन के लिए वापस आ रहे हैं पूल)। यह करने के लिए निर्धारित रास्ता 'using
' कथन का उपयोग किया जाता है:
// Execute stored proc to read data from repository
using (SqlConnection conn = new SqlConnection(this.connectionString))
{
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "LoadFromRepository";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@ID", fileID);
conn.Open();
using (SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
if (rdr.Read())
{
filename = SaveToFileSystem(rdr, folderfilepath);
}
}
}
}
पूछताछकर्ता ने बताया कि वे PHP का उपयोग कर रहे थे, इसलिए कोड नमूना उनके लिए उपयुक्त नहीं हो सकता है। कचरा कलेक्टर स्वचालित रूप से गैर-निरंतर SQL सर्वर कनेक्शन को साफ़ कर लेता है जब उनके पास कोई संदर्भ नहीं होता है (और पृष्ठ संदर्भ के अंत में सभी संदर्भ गिराए जाएंगे), लेकिन हो सकता है कि पूछताछ लगातार कनेक्शन का उपयोग कर रही हो, जिसके लिए बुद्धिमान कनेक्शन की आवश्यकता हो पुन: उपयोग। –
देख sp_who यह तुम सिर्फ कनेक्शन
अपने मामले मेंकी संख्या को देखकर की तुलना में अधिक विवरण देता है मैं कुछ इस तरह करना होगा
DECLARE @temp TABLE(spid int , ecid int, status varchar(50),
loginname varchar(50),
hostname varchar(50),
blk varchar(50), dbname varchar(50), cmd varchar(50), request_id int)
INSERT INTO @temp
EXEC sp_who
SELECT COUNT(*) FROM @temp WHERE dbname = 'DB NAME'
एमएस एसक्यूएल ज्ञान आधारित - कैसे खुला SQL डेटाबेस कनेक्शन (रों) और जो मेजबान पर कब्जा कर लिया पता करने के लिए।
नीचे दिए गए प्रश्न का उपयोग करके आपको सूची डेटाबेस, होस्ट नाम और खुली कनेक्शन गिनती की कुल संख्या मिल जाएगी, जिसके आधार पर आपको पता होगा कि मेजबान ने SQL कनेक्शन पर कब्जा कर लिया है।
SELECT DB_NAME(dbid) as DBName, hostname ,COUNT(dbid) as NumberOfConnections
FROM sys.sysprocesses with (nolock)
WHERE dbid > 0
and len(hostname) > 0
--and DB_NAME(dbid)='master' /* Open this line to filter Database by Name */
Group by DB_NAME(dbid),hostname
order by DBName
मुझे पता है कि यह पुराना है, लेकिन सोचा कि यह अपडेट करना एक अच्छा विचार होगा। यदि एक सटीक गिनती की आवश्यकता है, तो कॉलम ईसीआईडी को भी फ़िल्टर किया जाना चाहिए। समांतर धागे वाले एक एसपीआईडी sysprocesses में कई बार दिखा सकता है और ईसीआईडी = 0 फ़िल्टरिंग प्रत्येक एसपीआईडी के लिए प्राथमिक धागा वापस कर देगा।
SELECT
DB_NAME(dbid) as DBName,
COUNT(dbid) as NumberOfConnections,
loginame as LoginName
FROM
sys.sysprocesses with (nolock)
WHERE
dbid > 0
and ecid=0
GROUP BY
dbid, loginame
इस का उपयोग करें (एक ही कनेक्शन स्ट्रिंग का उपयोग करता है प्रत्येक उपयोगकर्ता/मेजबान प्रक्रिया मानकर) प्रत्येक कनेक्शन पूल के लिए एक सटीक गणना प्राप्त करने में
SELECT
DB_NAME(dbid) as DBName,
COUNT(dbid) as NumberOfConnections,
loginame as LoginName, hostname, hostprocess
FROM
sys.sysprocesses with (nolock)
WHERE
dbid > 0
GROUP BY
dbid, loginame, hostname, hostprocess
- 1. एमएस एसक्यूएल सर्वर 2005
- 2. एमएस एसक्यूएल सर्वर 2005
- 3. एमएस एसक्यूएल सर्वर 2005 एक्सप्रेस
- 4. एमएस एसक्यूएल सर्वर 2005 पर सूचकांक वर्चर
- 5. एमएस एसक्यूएल सर्वर 2005 में एक कॉलम का नाम बदलना
- 6. टी-एसक्यूएल एसक्यूएल सर्वर 2005
- 7. चेक सर्वर (एसक्यूएल सर्वर 2005
- 8. एसक्यूएल सर्वर 2005/2008
- 9. एसएएस एसक्यूएल सर्वर 2005
- 10. एसक्यूएल सर्वर 2005
- 11. एसक्यूएल सर्वर 2005
- 12. एसक्यूएल सर्वर 2005
- 13. एसक्यूएल सर्वर 2005
- 14. एसक्यूएल सर्वर 2005
- 15. माइक्रोसॉफ्ट एसक्यूएल सर्वर 2005
- 16. एसक्यूएल सर्वर 2005: परिवर्तनीय
- 17. एसक्यूएल सर्वर 2005
- 18. एसक्यूएल सर्वर 2005
- 19. एमएस एसक्यूएल सर्वर
- 20. एमएस एसक्यूएल सर्वर
- 21. एमएस-एसक्यूएल सर्वर
- 22. एमएस एसक्यूएल सर्वर
- 23. एमएस एसक्यूएल सर्वर
- 24. एमएस एसक्यूएल सर्वर
- 25. एमएस एसक्यूएल सर्वर डेटाबेस
- 26. एसक्यूएल सर्वर 2005 (या 08)
- 27. माइक्रोसॉफ्ट एसक्यूएल सर्वर 2005 स्ट्रिंग
- 28. एसक्यूएल सर्वर 2005 डाटाबेस 'रिकवरी'
- 29. एसक्यूएल सर्वर 2005: एकल क्वेरी
- 30. एसक्यूएल क्वेरी SQL सर्वर 2005
अद्भुत आपको बहुत बहुत धन्यवाद। मेरे जैसे नौसिखियों के लिए, SQL सर्वर प्रबंधन स्टूडियो प्रारंभ करें, अपने डेटाबेस पर राइट क्लिक करें, नई क्वेरी का चयन करें, इसे पेस्ट करें और "! जाओ" बटन पर क्लिक करें। –
इसे न तो स्वीकार किया जाना चाहिए, न ही उच्चतम वोट दिया गया जवाब क्योंकि यह गलत है। यदि आप 'sa' के रूप में लॉग इन हैं तो आप केवल लौटाए गए नंबर पर भरोसा कर सकते हैं। यदि आप गैर-उपयोगकर्ता के रूप में लॉग इन हैं, तो आप 1 देखेंगे और यह वास्तविक कनेक्शन का प्रतिनिधि नहीं होगा। – ajeh
@ajeh: यह निहित है कि आपके पास कार्य करने के लिए पर्याप्त अनुमतियां हैं। आपकी टिप्पणी अनावश्यक है। –