Codepoint

by Trentia Consulting

Reporting Services y SET FMTONLY

La instrucción SET FMTONLY en SQL Server se utiliza para definir si queremos recibir solamente metadatos cómo resultado de las solicitudes.

SET FMTONLY { ON | OFF }

La opción por defecto es SET FMTONLY OFF, por lo que si queremos ejecutar una consulta SQL y recibir solamente información sobre las columnas deberemos de cambiar previamente el valor a SET FMTONLY ON.

USE [Usuarios]
GO
SET FMTONLY ON
SELECT *
  FROM Usuarios
SET FMTONLY OFF
GO

SQL Reporting Services trabaja con FMTONLY activado (FMTONLY ON) al ejecutar la función Refresh Fields para leer las columnas de un procedimiento almacenado.

image_2

Sin embargo, es posible que si estamos tratando con un procedimiento almacenado complejo, SQL Server no pueda resolver los nombres de las columnas a no ser que previamente construya el conjunto de datos (lo que no ocurrirá ya que FMTONLY está en ON). Si nos encontramos en éste caso, nuestro conjunto de columnas de la respuesta del procedimiento almacenado estará vacío.

image_4

Para solucionarlo, podemos cambiar el estado de FMTONLY a OFF en nuestro procedimiento almacenado:

USE [Usuarios]
ALTER PROCEDURE [dbo].[sp_Consulta]
AS
BEGIN
    SET FMTONLY OFF;
 
    declare @sql varchar(5000)        

    SET @sql =
            'SELECT *                              
             FROM Usuario
             WHERE (1=1)'
    
    exec (@sql)
END

Agregar comentario

Loading