我想要实现的是通过使用DATEDIFF函数找出数据库备份的保留时间。 但是为了使用DATEDIFF,我需要比较结果中的数据,因为我不知道它在其他任何地方。
为什么从结果出来?
我发现这个命令给了我完成任务所需的所有信息(BackupFinishDate,ExpirationDate):
RESTORE HEADERONLY FROM DISK = 'X:\Backups\Backuptest.bak'
我很确定我不允许在生产服务器中创建临时表,所以如果这是一个选项,我恐怕无法使用它。
PS!如果有更好的方法来查找备份的保留日,我很乐意使用它。如果在PowerShell中可以实现这一点,那就更好了。
答案 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 ..看起来有点笨重,但它确实有用,而且我现在还不知道更好的方法。