如何将结果输出列用作MSSQL中的对象

时间:2017-08-18 06:35:50

标签: sql-server tsql database-backups

我想要实现的是通过使用DATEDIFF函数找出数据库备份的保留时间。 但是为了使用DATEDIFF,我需要比较结果中的数据,因为我不知道它在其他任何地方。

为什么从结果出来?

我发现这个命令给了我完成任务所需的所有信息(BackupFinishDate,ExpirationDate):

RESTORE HEADERONLY FROM DISK = 'X:\Backups\Backuptest.bak'

我很确定我不允许在生产服务器中创建临时表,所以如果这是一个选项,我恐怕无法使用它。

PS!如果有更好的方法来查找备份的保留日,我很乐意使用它。如果在PowerShell中可以实现这一点,那就更好了。

1 个答案:

答案 0 :(得分:0)

好吧,我似乎用PowerShell的提示回答了我自己的问题。我给了自己:P

解决方案是:

$bkp_start = Invoke-Sqlcmd -ServerInstance myServer -Query "RESTORE HEADERONLY FROM DISK = 'X:\Backups\Backuptest.bak'" | Select-Object -ExpandProperty BackupFinishDate
$bkp_end = Invoke-Sqlcmd -ServerInstance myServer -Query "RESTORE HEADERONLY FROM DISK = 'X:\Backups\Backuptest.bak'" | Select-Object -ExpandProperty ExpirationDate

$RetentionInDays = New-TimeSpan -Start $bkp_start -End $bkp_end | Select-Object -ExpandProperty Days

Write-Output "Retention period : $RetentionInDays"

我喜欢PowerShell ..看起来有点笨重,但它确实有用,而且我现在还不知道更好的方法。