Ниже приведено больше, чтобы установить вас на правильный путь. вам нужно взглянуть на нижеприведенное, понять его, адаптировать его под свои требования, а затем использовать планировщик задач, чтобы использовать его. Я не могу / не буду поддерживать это; это зависит от вас, чтобы быть в состоянии сделать это, и если вы не можете сделать это, не используйте его.
Ниже приведен скрипт Powershell, который использует sqlcmd для получения данных, а затем использует Send-MailMessage
. Я не использовал Invoke-sqlcmd
, так как я не установил в офисе. Я уверен, что кто-то может показать, как это использовать. Вам нужно установить учетные данные / настройки сервера для вашего почтового сервера:
$Query = "
DECLARE @SQL nvarchar(MAX) = N'USE ?' + NCHAR(10) +
N'INSERT INTO ##Files(DatabaseName, DBFile, SizeMB, SpaceUsed)' + NCHAR(10) +
N'SELECT ''?'', [name] AS DBFile, Size, FILEPROPERTY(name,''SpaceUsed'') AS SpaceUsed' + NCHAR(10) +
N'FROM sys.database_files' + NCHAR(10) +
N'WHERE Type_desc = ''ROWS'';';
EXEC sys.sp_MSforeachdb @command1 = @SQL,
@precommand = N'CREATE TABLE ##Files(DatabaseName sysname, DBFile sysname, SizeMB int, SpaceUsed int);',
@postcommand = N'SELECT DatabaseName, SUM(SizeMB) AS Size, SUM(SpaceUsed) AS SpaceUsed, SUM(SizeMB - SpaceUsed) AS FreeSpace FROM ##Files GROUP BY DatabaseName; DROP TABLE ##Files;';"
$databases = sqlcmd -S YourSQLServer -E -d master -Q "$Query" -s "," -W | Out-String
Write-Host $databases
Send-MailMessage -From "FromAddress@YourDomain.com" -To "ToAddress@YourDomain.com" -Subject "DB Space Remaining" -Body "$databases" -SmtpServer exchange
Обратите внимание, что здесь также использовалась процедура без документов sp_MSforeachdb
.