
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