Frage

Meine PHP/MS-Sql-Server 2005/win 2003 Anwendung gelegentlich nicht mehr reagiert, wird sehr, den Speicher/die cpu-Auslastung nicht spike.Wenn ich versuche, öffnen Sie eine neue Verbindung von sql management studio ein, dann hängt es sich einfach an der geöffneten Dialogfeld "Verbindung".wie deterime die Gesamtzahl der aktiven verbindungen, ms sql server 2005

War es hilfreich?

Lösung

Dies zeigt die Anzahl der Verbindungen pro jede DB:

SELECT 
    DB_NAME(dbid) as DBName, 
    COUNT(dbid) as NumberOfConnections,
    loginame as LoginName
FROM
    sys.sysprocesses
WHERE 
    dbid > 0
GROUP BY 
    dbid, loginame

Und das gibt die Gesamt:

SELECT 
    COUNT(dbid) as TotalConnections
FROM
    sys.sysprocesses
WHERE 
    dbid > 0

Wenn Sie mehr Details benötigen, führen Sie:

sp_who2 'Active'

Hinweis: Das SQL Server verwendete Konto muss die sysadmin Rolle (sonst wird es nur eine einzige Reihe zeigen und eine Zählung von 1 als Ergebnis)

Andere Tipps

Wie @jwalkerjr erwähnt, sollten Sie von Verbindungen im Code werden Entsorgung (wenn Verbindungspooling aktiviert ist, werden sie nur an den Verbindungspool zurückgegeben). Die vorgeschriebene Art und Weise, dies zu tun ist mit der ‚using‘ Aussage:

// 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);
            }
        }
    }
}

Ich weiß, das ist alt, aber dachte, es wäre eine gute Idee, zu aktualisieren. Wenn eine genaue Zählung benötigt wird, dann sollte Spalte ECID wahrscheinlich auch gefiltert werden. Ein SPID mit parallelen Fäden kann mehrfach in sysprocesses und Filterung ECID = 0 kehren den primären Thread für jeden SPID angezeigt.

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

Verwenden Sie diese Funktion eine genaue Zählung für jede Verbindung Pool zu bekommen (vorausgesetzt, jeder Benutzer / Host-Prozess die gleiche Verbindungszeichenfolge verwendet)

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

Wenn Sie Ihre PHP-Anwendung wird geöffnet viele SQL Server-Verbindungen zu halten, dann, wie Sie vielleicht wissen, haben Sie ein Problem mit Ihrem App-Datenbank-Code. Es sollte die Freigabe / diese Verbindungen nach Gebrauch entsorgen und Connection Pooling verwenden. Werfen Sie einen Blick hier für einen anständigen Artikel zum Thema ...

http://www.c-sharpcorner.com/UploadFile /dsdaf/ConnPooling07262006093645AM/ConnPooling.aspx

finden Sie unter Sp_who es gibt Ihnen mehr Details als nur die Zahl zu sehen von Verbindungen

in Ihrem Fall ich so etwas tun würde

 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'

MS SQL-Kenntnisse verfügen, basiert - Wie Sie wissen, öffnen Sie den SQL-Datenbank-Verbindung(en) und besetzt, auf dem host.

Mithilfe der folgenden Abfrage werden Sie finden, Liste, Datenbank, Host-Namen und die Gesamt-Anzahl der Anzahl der geöffneten verbindungen, basierend auf, dass, werden Sie haben die Idee, die der host besetzt ist SQL-Verbindung.

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top