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

How to use result output columns as objects in MSSQL

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

为什么是结果?

我发现此命令为我提供了完成任务所需的所有信息(BackupFinishDate、ExpirationDate):

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

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

PS!如果有更好的方法来找出备份的保留天数,我会很乐意使用它。如果这在 PowerShell 中是可能的,那就更好了。

嗯,看来我用 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.. 看起来有点笨拙,但它确实有效,我目前不知道更好的方法。