繁体   English   中英

通过邮件计划的SQL Server报告

[英]Scheduled SQL Server reports via mail

我正在使用SQL Server 2008 Express,我的问题是:有什么方法可以创建每日报告来计算每个数据库的可用空间,并将该报告发送到一个特定的电子邮件地址? 报告的格式完全没有关系,我该怎么办? 感谢您的所有建议

以下是使您走上正确道路的更多方法。 您需要查看以下内容,了解它,使其适应您的要求,然后使用Task Scheduler来使用它。 我不能/不会支持; 取决于您是否能够做到这一点,如果不能做到这一点,请不要使用它。

下面是一个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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM