Google Translate

Stella inattivaStella inattivaStella inattivaStella inattivaStella inattiva
 

Come rispondere alla domanda : "Chi sono gli utenti collegati al server MS SQL ?"


Classica domanda quando ci si ritrova a dover fare manutenzione al server, al database ecc..
MSSQL dispone della store procedure sp_who per ottenere un elenco con tutti gli utenti collegati.
Si tratta di un elenco non di immediata lettura.


Cosi' ho pensato di riorganizzare l'output creando una piccola store procedure.
Premetto che non sono un esperto e preferisco definirmi uno "smanettone".
Una volta creata la store procedure, che ho chiamato "utenti",  bastera scrive utenti e premere F5

 

ESEGUIRE IL SEGUENTE CODICE IN UN PROMPT DEI COMANDI DI MSSQL

USE [MyToolDB]
GO

SET
ANSI_NULLS ON
GO


SET
QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date:
-- Description:
--
=============================================
CREATE PROCEDURE [dbo].[utenti] AS BEGIN
SET NOCOUNT ON; BEGIN TRY

DECLARE
@return_value int
-- Creo Tabella Temporanea
CREATE TABLE [dbo].[#TmpUsers](
[spid] [smallint] NOT NULL,
[ecid] [smallint] NOT NULL,
[status] [nchar](30) NOT NULL,
[loginame] [nvarchar](128) NULL,
[hostname] [nchar](128) NOT NULL,
[blk] [char](5) NULL,
[dbname] [nvarchar](128) NULL,
[cmd] [nchar](16) NOT NULL,
[request_id] [int] NOT NULL
) ON [PRIMARY] INSERT INTO #TmpUsers EXEC sp_who select distinct hostname, dbname from #TmpUsers
END TRY

BEGIN
CATCH
-- se si verifica un errore ritorna un record con il dettaglio dell'errore
SELECT ERROR_NUMBER() AS ErrorNumber,
ERROR_SEVERITY() AS ErrorSeverity,
ERROR_STATE() as ErrorState,
ERROR_PROCEDURE() as ErrorProcedure,
ERROR_LINE() as ErrorLine,
ERROR_MESSAGE() as ErrorMessage;

END CATCH

END


 

- have fun -