Estoy tratando de usar ' RESTORE HEADERONLY ' para obtener la fecha en que se realizó la copia de seguridad que estoy a punto de restaurar.
El comando:
RESTORE HEADERONLY FROM DISK = '<path to .bak file>'
funciona bien en el Analizador de consultas y proporciona un conjunto de resultados con algo así como 50 columnas.
El problema es realmente acceder a esto desde el código.
Puedo obtener esto en una tabla temporal declarando cada una de las 50 columnas: ish, insertando exec
y obteniendo el valor que deseo a partir de ahí.
El problema es que realmente quiero evitar tener que declarar todo el conjunto de resultados como una tabla temporal, ya que parece una solución muy frágil si alguna vez le agregan columnas en versiones futuras.
¿Hay alguna forma de obtener una sola columna de este conjunto de resultados sin declarar todas las columnas?
sp_describe_first_result_set
sistema sp es el culpable. También planteé esta pregunta como un boleto separado aquíMARTINPC\MSSQL2008
), por lo que tal vez algo ha cambiado en versiones posteriores, lo que significa que esto ya no funciona.Esta es una versión independiente que escribí para obtener la fecha de respaldo de un archivo.
Se probó para SQL 2008R2, 2012 y 2014.
fuente
12.0.4100.1
, por lo que el código debe mirar todos los camposSERVERPROPERTY('ProductVersion')
para atenderlo correctamente.Dado que solo solicitó acceso a los datos desde 'código' sin especificar ningún tipo de código, por la presente presento la solución PowerShell :
fuente
La forma antigua, como referencia:
fuente
12.0.4100.1
.