341 votes

Comment puis-je voir les connexions SQL Server actives ?

J'utilise SQL Server 2008 Enterprise. Je veux voir toutes les connexions actives au serveur SQL, et les informations relatives à toutes les connexions, comme l'adresse IP, la base de données ou autre.

Existe-t-il des commandes permettant de résoudre ce problème ?

2 votes

1 votes

Sys.dm_exec_sessions, id de session à vérifier >50

395voto

Mehrdad Afshari Points 204872

Vous pouvez utiliser le sp_who procédure stockée.

Fournit des informations sur les utilisateurs, les sessions et les processus actuels dans une instance du moteur de base de données Microsoft SQL Server. Les informations peuvent être filtrées pour ne renvoyer que les processus qui ne sont pas inactifs, qui appartiennent à un utilisateur spécifique ou qui appartiennent à une session spécifique.

14 votes

Lorsque vous devez filtrer pour une base de données spécifique, il vaut mieux sélectionner à partir de sys.sysprocesses.

2 votes

Comment ajouter un filtre pour des bases de données spécifiques uniquement ? WHERE dbname = "nom de la base de données" ? J'ai essayé ceci et j'ai obtenu une erreur

2 votes

@Geo.Dude, Iman Abidi veut dire créer votre propre requête select à partir de sys.sysprocesses et ajouter une clause where à cette requête. Tu devras filtrer sur le dbid. Vous pouvez trouver l'id de la base de données dans sys.databases (ou vous pouvez joindre ces deux-là).

384voto

Syed Umar Ahmed Points 1364
SELECT 
    DB_NAME(dbid) as DBName, 
    COUNT(dbid) as NumberOfConnections,
    loginame as LoginName
FROM
    sys.sysprocesses
WHERE 
    dbid > 0
GROUP BY 
    dbid, loginame
;

Voir également la documentation de Microsoft pour sys.sysprocesses .

7 votes

Lors de l'automatisation, cette requête peut être plus utile que sp_who qui est plus orientée vers l'affichage.

1 votes

C'est la méthode que je préfère, mais elle ne répond pas entièrement à la question de l'OP. Suggérer d'ajouter hostname au SELECT y GROUP BY pour voir quels clients sont connectés. Je viens aussi de réaliser la faute de frappe Msft pour loginame - est-ce un artefact de l'époque où les noms de colonnes étaient limités à 8 caractères ? lol

15 votes

sys.sysprocesses est déprécié dans les versions plus récentes de SQL Server. Il correspond à ces trois points de vue de la direction : sys.dm_exec_connections, sys.dm_exec_sessions, et sys.dm_exec_requests.

62voto

Sklivvz Points 16412

En dehors de sp_who vous pouvez également utiliser le "non-documenté". sp_who2 qui vous donne des informations plus détaillées. Voir _Différence entre sp_who et sp_who2_ .

17 votes

Qui est connecté à dbo.First ?

50voto

Fernando Santos Points 89

Cliquez sur l'icône "moniteur d'activité" dans la barre d'outils.

De Thorsten 's commentaire :

Dans SQL Server Management Studio, cliquez avec le bouton droit de la souris sur le serveur, choisissez "Activity Monitor" dans le menu contextuel ou utilisez le raccourci clavier. Ctrl + Alt + A .

Référence : Microsoft Docs - Ouvrir le moniteur d'activité dans SQL Server Management Studio (SSMS)

12 votes

Dans SQL Server Management Studio, cliquez avec le bouton droit de la souris sur le serveur, choisissez "Activity Monitor" dans le menu contextuel ou utilisez le raccourci clavier Ctrl+Alt+A.

0 votes

Bonne option, mais elle nécessite plus de privilèges que l'extraction de DB_NAME(dbid) de sys.sysprocesses.

24voto

d4d0n Points 199

sp_who & sp_who2 fonctionnent très bien mais j'ai trouvé la déclaration suivante très utile et ce que je cherchais :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X