2017-08-18 1 views
0

Ce que j'essaie de faire, c'est de déterminer la durée de rétention d'une sauvegarde de base de données en utilisant la fonction DATEDIFF. Mais pour utiliser DATEDIFF, j'aurais besoin de quelque chose à comparer, les données du résultat, parce que je ne le sais pas ailleurs.Comment utiliser les colonnes de sortie du résultat en tant qu'objets dans MSSQL

Pourquoi à partir d'un résultat?

Je trouve que cette commande me donne toutes les informations que je dois accomplir ma tâche (BackupFinishDate, ExpirationDate):

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

Je suis sûr que je ne suis pas autorisé à créer des tables temporaires dans la production serveurs, donc si c'est une option, je crains de ne pas pouvoir l'utiliser.

PS! S'il y a une meilleure façon de trouver des jours de rétention d'une sauvegarde, je serais heureux de l'utiliser. Si cela était possible dans PowerShell, ce serait encore mieux.

Répondre

0

Eh bien, il me semblait que je répondais à ma propre question avec l'indice PowerShell .. Je me suis donné: P

solution a été:

$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" 

J'adore PowerShell .. ressemble un peu maladroit, mais il fonctionne et je ne sais pas de meilleure façon en ce moment.