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 -