J'essaie d'utiliser ' RESTORE HEADERONLY ' pour obtenir la date à laquelle la sauvegarde que je suis sur le point de restaurer a été effectuée.
La commande:
RESTORE HEADERONLY FROM DISK = '<path to .bak file>'
fonctionne bien dans l'Analyseur de requêtes et donne un jeu de résultats avec quelque chose comme 50 colonnes.
Le problème consiste en fait à y accéder à partir du code.
Je peux obtenir ceci dans une table temporaire en déclarant chacune des colonnes 50: ish, en y insérant avec exec
et en obtenant la valeur que je veux à partir de là.
Le problème est que je veux vraiment éviter d'avoir à déclarer l'ensemble des résultats comme une table temporaire car cela semble être une solution très fragile s'ils y ajoutent des colonnes dans les futures versions.
Existe-t-il un moyen de récupérer une seule colonne de cet ensemble de résultats sans déclarer toutes les colonnes?
sp_describe_first_result_set
système sp est le coupable derrière. J'ai également soulevé cette question en tant que ticket séparé iciMARTINPC\MSSQL2008
), donc peut-être que quelque chose a changé dans les versions ultérieures, ce qui signifie que cela ne fonctionne plus.Il s'agit d'un sp indépendant de la version que j'ai écrit pour obtenir la date de sauvegarde à partir d'un fichier.
Il est testé pour SQL 2008R2, 2012 et 2014.
la source
12.0.4100.1
, donc le code devrait regarder tous les champsSERVERPROPERTY('ProductVersion')
pour répondre correctement à cela.Étant donné que vous avez uniquement demandé à accéder aux données à partir du «code» sans spécifier de détails sur le type de code, je présente la solution PowerShell :
la source
La manière ancienne, pour référence:
la source
12.0.4100.1
.