Logga inloggade användare till en tabell


Tag : SQL,Powershell,script,SQL Server,Uncategorized

Om du undrar om en databas används kan du lägga på det här scriptet i ett jobb som sen loggar det till en tabell.
Ange vilken databas och tabell du vill köra på. Sen kan du lägga in det antingen i ett SQL Server jobb eller ett scheduled task tänk då bara på att användaren i scheduled tasken måste ha rättigheter mot Master.

Det är endast sessioner med id 51 eller högre som loggas då sessioner med id 50 och nedåt är systemsessioner som alltid finns om server är igång.

$DB_Name = "Your Database"
$Table_Name = "Your Table"
$ConnectionString = "Your Server"

$Query = @" IF NOT EXISTS (SELECT     *   FROM sys.databases   WHERE name = '$DB_Name') BEGIN   CREATE DATABASE $DB_Name END GO

IF NOT EXISTS (SELECT     *   FROM $DB_Name.dbo.sysobjects   WHERE name = '$Table_Name') BEGIN   SELECT     b.name,     a.session_id,     a.login_time,     a.login_name,     a.host_name,     a.program_name INTO $DB_Name.dbo.$Table_Name   FROM sys.dm_exec_sessions a   JOIN sys.databases b     ON a.database_id = b.database_id   WHERE a.session_id >= '51' END

ELSE BEGIN   INSERT INTO $DB_Name.dbo.$Table_Name     SELECT       b.name,       a.session_id,       a.login_time,       a.login_name,       a.host_name,       a.program_name     FROM sys.dm_exec_sessions a     JOIN sys.databases b       ON a.database_id = b.database_id     WHERE a.session_id >= '51' END "@

Invoke-Sqlcmd -ServerInstance $ConnectionString -Database Master -Query $Query

About

Det här är min digitala anteckningsbok för allt som har med databaser, automatisering och teknik att göra.
Här samlar jag alla de där skripten, lösningarna och knepen jag byggt på mig under åren – främst inom SQL Server och PowerShell.
Istället för att de ska ligga och damma i en glömd mapp delar jag med mig av dem här, så att både jag själv (när minnet sviker) och du förhoppningsvis kan spara några timmars klickande.