Avatar billede tma Juniormester
30. marts 2005 - 16:07 Der er 9 kommentarer og
1 løsning

Antallet af AKTIVE connections?

Hvordan finder jeg antallet af aktive connections på en sql-server.
select @@connections viser antallet af connections siden sidste serverstart. sp_monitor viser anden information, men ikke den rigtige.

Torben
Avatar billede jokkejensen Novice
30. marts 2005 - 16:11 #1
Avatar billede jokkejensen Novice
30. marts 2005 - 16:12 #2
scroll lidt ned :)
Avatar billede tma Juniormester
30. marts 2005 - 20:54 #3
Det må du gerne uddybe lidt.

Er det alt dette der skal køres (og tager den alle de processer med som eventuelle programmer har instantieret:

CREATE PROCEDURE sp_who_active
/* by Maxim Smirnov */
/* procedure will show active connections to the server excluding system processes*/

AS

SET NOCOUNT ON

DECLARE @spid int

/**** Get statistical process information ***/
SELECT
spid,
  blocked,
      'Database' = CASE WHEN master.dbo.sysdatabases.name IS NULL
THEN '' ELSE CAST(master.dbo.sysdatabases.name AS char(15)) END,
  cpu,
  physical_io,
  'program_name' = CAST(program_name AS char(15)),
  cmd,
  loginame
FROM
  master.dbo.sysprocesses,
  master.dbo.sysdatabases
WHERE
  cmd <> 'awaiting command' /** Inactive processes are excluded ***/
AND master.dbo.sysdatabases.dbid =* master.dbo.sysprocesses.dbid
AND spid >5 /*** System processes are excluded ***/

/*** Use cursor to get SQL Statement for each connection ***/

DECLARE @sqlstring varchar(250)

CREATE TABLE #temp (col1 nvarchar(30), col2 int, col3 nvarchar(255))

DECLARE cur CURSOR FOR
  SELECT spid
  FROM
      master.dbo.sysprocesses,
      master.dbo.sysdatabases
  WHERE
      cmd <> 'awaiting command'
      AND master.dbo.sysdatabases.dbid =* master.dbo.sysprocesses.dbid
      AND spid >5
OPEN cur
FETCH NEXT FROM cur INTO @spid
WHILE @@fetch_status = 0
BEGIN
  SET @sqlstring = 'DBCC INPUTBUFFER (' + CAST(@spid AS CHAR(3)) + ')'
  INSERT #temp (col1, col2, col3)
  EXEC (@sqlstring)

  FETCH NEXT FROM cur INTO @spid
END

CLOSE cur
DEALLOCATE cur

SELECT COL3 AS SQL_Statement
FROM #temp

DROP TABLE #temp

SET NOCOUNT OFF
GO

Hilsen Torben
Avatar billede tma Juniormester
30. marts 2005 - 20:55 #4
Og lige en sidste ting: Har du selv afprøvet den?
Avatar billede janus_007 Nybegynder
30. marts 2005 - 22:09 #5
øhh hvad skete der med sp_who2 ??
Avatar billede tma Juniormester
01. april 2005 - 08:27 #6
Jeg kan se i den russiske tekst at der bliver nævnt sp_who2 men kan ikke se denne kode. Har du et færdigt kode sæt liggende som du kan paste her på eksperten?

Hilsen Torben
Avatar billede janus_007 Nybegynder
01. april 2005 - 16:20 #7
Bare kør sp_who2 fra din queryanalyzer!
Avatar billede tma Juniormester
01. april 2005 - 19:55 #8
Problemet er jo netop, at der i den kode der er vist på siden ikke optræder en funktion der hedder sp_who2

Så kan jeg jo ikke køre noget.

Torben
Avatar billede zedios Nybegynder
04. april 2005 - 11:30 #9
Du kan benytte følgende SQL til at slå direkte op i in-memory system tabellen der fortæller dig dette:

SELECT COUNT(*) FROM master.dbo.sysprocesses NOLOCK

Jeg ved ikke helt hvad du mener med aktive, men du kan evt. kigge lidt på status hvis du har nogle specielle behov ..
Avatar billede tma Juniormester
04. april 2005 - 11:37 #10
Fair nok at du får point for svaret, jeg havde dog selv fundet denne.

Kender du andre metoder til at afsløre om brugerprogrammer har deallokeret korrekt?

Torben
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester