Jak sprawdzić ilość połączeń do bazy MSSQL?

0

Mam program na MSSQL.
Z programu wykonuję skrypty zakładające bazę i aktualizacje. Przed aktualizacją sprawdzam ilość połączeń do bazy. Jeśli tylko jedno połączenie (czyli moje) to można robić aktualizacje.
I mam taki problem.
Na niektórych komputerach działa dobrze a na niektórych cały czas wykrywa więcej niż jedno połączenie. Nawet na nowo założonej bazie (czyli nikogo innego tam nie ma połączonego).

A jak sprawdzam ilość połączeń?

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'

a także tak:

SELECT DB_NAME(dbid) as DBName,
           COUNT(dbid) as ILE
           FROM sys.sysprocesses
           GROUP BY DB_NAME(dbid)
           HAVING DB_NAME(dbid) = 'DB NAME'

Macie jakiś pomysł czemu tak się dzieje?

0

Sama aplikacja może mieć otwarte więcej niż jedno połączenie, może być tak że połączenie na ten sam login jest z kilku komputerów, więc sprawdzaj tak:

SELECT 
	DB_NAME(dbid) as DBName,
	COUNT(dbid) as ILE,
	loginame,
	hostname
FROM 
	sys.sysprocesses
GROUP BY 
	DB_NAME(dbid)
	,loginame,
	hostname
HAVING 
	DB_NAME(dbid) = 'DB NAME'
0

nadal to samo. Więcej niż jedno połączenie.

0
```sql show processlist; ``` - przeczytało mi się MySQL
0

Chodzi o MSSQL
Nie ma polecenia SHOW

0

Pele2, ale skoro pokazuje więcej niz jedno, to tak faktycznie może być, sprawdzałeś co to za połączenia, cz starasz się zaklinać rzeczywistość...

0

Ale dlaczego na moim komputerze zakładam nową bazę i łączę się do niej i mam jedno połączenie a na innym komputerze robię to samo i mam więcej niż jedno?

0

no ale chyba normalnym pierwszym odruchem w takiej sytuacji jest sprawdzenie co rzeczywiście zwraca baza jako połączenia.

0

Pele nie umiem wróżyć...

0 użytkowników online, w tym zalogowanych: 0, gości: 0