У меня 3 экземпляра SQL Server, работающих на 3 разных серверах. Я хочу иметь возможность автоматически отбрасывать любую базу данных, в которой не было входа более 30 дней. Я пытаюсь сделать это в power-shell, см. Код ниже:
$SQLInstances = "sql2016", "sql2014", "sql2012"
$SQLQuery = "SELECT * FROM sys.databases WHERE name not in ('tempdb','model', 'msdb', 'master','EVN') and name not like '%report%'"
foreach($sqLInstance in $SQLInstances) {
$ListOfDatabases = Invoke-Sqlcmd -ServerInstance $sqLInstance -Database "master" -Query $SQLQuery
ForEach ($Database in $ListOfDatabases ) {
Invoke-Sqlcmd -ServerInstance $sqLInstance -Database "$Database" -Query "IF (SELECT * FROM sys.dm_exec_sessions WHERE DATEDIFF(day, LOGIN_TIME , GETDATE()) > 30 )
BEGIN
DROP DATABASE $Database
END "
}
}
Я застрял на том, как отбросить базы данных. Последнее, что мне нужно, это отправить электронное письмо со списком баз данных, которые будут / были отброшены.
Любые предложения о том, как должен выглядеть мой код?