ms sql server 2005에서 열려 있는/액티브 접속의 합계수를 확인하는 방법
PHP/MS SQL Server 2005/win 2003 응용 프로그램이 매우 응답하지 않을 수 있으며 메모리/CPU 사용량이 급증하지 않습니다.SQL 관리 스튜디오에서 새 연결을 열려고 하면 열린 연결 대화 상자에서 중단됩니다.활성 연결의 총 수를 억제하는 방법 msql server 2005
각 DB별 연결 수를 보여 줍니다.
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 Server 계정에는 'sysadmin' 역할이 필요합니다(그렇지 않으면 하나의 행과 1의 카운트만 표시됩니다).
이를 통해 각 접속 풀의 정확한 카운트를 얻을 수 있습니다(각 사용자/호스트 프로세스가 같은 접속 문자열을 사용하고 있는 경우).
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
@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);
}
}
}
}
오래된 건 알지만 업데이트 하는 게 좋을 것 같아서요.정확한 카운트가 필요한 경우 열 ECID도 필터링해야 합니다.병렬 스레드가 있는 SPID는 syspprocesses에 여러 번 표시될 수 있으며 ECID=0 필터링은 각 SPID에 대한 기본 스레드를 반환합니다.
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
PHP 앱이 많은 SQL Server 연결을 유지하고 있다면 알다시피 앱의 데이터베이스 코드에 문제가 있는 것입니다.사용 후 연결 풀링을 사용하여 연결을 해제/해제해야 합니다.이 주제에 대한 괜찮은 기사를 보려면 여기를 보세요.
http://www.c-sharpcorner.com/UploadFile/dsdaf/ConnPooling07262006093645AM/ConnPooling.aspx
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'
MS SQL 지식 기반 - 열려 있는 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
SELECT
[DATABASE] = DB_NAME(DBID),
OPNEDCONNECTIONS =COUNT(DBID),
[USER] =LOGINAME
FROM SYS.SYSPROCESSES
GROUP BY DBID, LOGINAME
ORDER BY DB_NAME(DBID), LOGINAME
언급URL : https://stackoverflow.com/questions/216007/how-to-determine-total-number-of-open-active-connections-in-ms-sql-server-2005
'programing' 카테고리의 다른 글
| 분기를 변경하지 않고 다른 Git 분기에 있는 파일 보기 (0) | 2023.04.10 |
|---|---|
| UILabel의 여러 줄 텍스트 (0) | 2023.04.10 |
| 로컬 및 원격 Git 저장소의 마스터 분기 이름 변경 (0) | 2023.04.10 |
| UI View를 이미지로 변환하는 방법 (0) | 2023.04.10 |
| Bash를 사용하여 명령어의 모든 출력을 억제하려면 어떻게 해야 합니까? (0) | 2023.04.10 |