SET FMTONLY (Transact-SQL)
Se aplica a: punto de conexión de SQL Server
Azure SQL Database
Azure SQL Instancia administrada
punto de conexión de SQL Analytics Analytics Platform System (PDW) de SQL Analytics
System (PDW)
de SQL Server en Microsoft Fabric
Warehouse en Microsoft Fabric
Devuelve solo metadatos al cliente. Se puede usar para probar el formato de la respuesta sin ejecutar realmente la consulta.
Nota
No utilice esta característica. Esta característica se ha reemplazado por los siguientes elementos:
Convenciones de sintaxis de Transact-SQL
Sintaxis
SET FMTONLY { ON | OFF }
Comentarios
Cuando FMTONLY
se establece en ON
, se devuelve un conjunto de filas con los nombres de columna, pero sin ninguna fila de datos.
SET FMTONLY ON
no tiene ningún efecto cuando el lote de Transact-SQL se analiza. El efecto se produce en el tiempo de ejecución de la ejecución.
El valor predeterminado es OFF
.
Permisos
Debe pertenecer al rol public.
Ejemplos
En el siguiente ejemplo de código de Transact-SQL, FMTONLY
se establece en ON
. Esta configuración hace que SQL Server devuelva únicamente información de metadatos relativa a las columnas seleccionadas. En concreto, devuelve los nombres de columna. No se devuelve ninguna fila de datos.
En el ejemplo, la ejecución de prueba del procedimiento almacenado prc_gm29
devuelve lo siguiente:
- Varios conjuntos de filas.
- Columnas de varias tablas, en una de sus instrucciones
SELECT
.
SET NOCOUNT ON;
GO
DROP PROCEDURE IF EXISTS prc_gm29;
DROP TABLE IF EXISTS #tabTemp41;
DROP TABLE IF EXISTS #tabTemp42;
GO
CREATE TABLE #tabTemp41
(
KeyInt41 INT NOT NULL,
Name41 NVARCHAR(16) NOT NULL,
TargetDateTime DATETIME NOT NULL DEFAULT GetDate()
);
CREATE TABLE #tabTemp42
(
KeyInt42 INT NOT NULL, -- JOIN-able to KeyInt41.
Name42 NVARCHAR(16) NOT NULL
);
GO
INSERT INTO #tabTemp41 (KeyInt41, Name41) VALUES (10, 't41-c');
INSERT INTO #tabTemp42 (KeyInt42, Name42) VALUES (10, 't42-p');
GO
CREATE PROCEDURE prc_gm29
AS
BEGIN
SELECT * FROM #tabTemp41;
SELECT * FROM #tabTemp42;
SELECT t41.KeyInt41, t41.TargetDateTime, t41.Name41, t42.Name42
FROM
#tabTemp41 AS t41
INNER JOIN #tabTemp42 AS t42 on t42.KeyInt42 = t41.KeyInt41
END;
GO
SET DATEFORMAT mdy;
SET FMTONLY ON;
EXECUTE prc_gm29; -- Returns multiple tables.
SET FMTONLY OFF;
GO
DROP PROCEDURE IF EXISTS prc_gm29;
DROP TABLE IF EXISTS #tabTemp41;
DROP TABLE IF EXISTS #tabTemp42;
GO
/**** Actual Output:
[C:\JunkM\]
>> osql.exe -S myazuresqldb.database.windows.net -U somebody -P secret -d MyDatabase -i C:\JunkM\Issue-2246-a.SQL
KeyInt41 Name41 TargetDateTime
----------- ---------------- -----------------------
KeyInt42 Name42
----------- ----------------
KeyInt41 TargetDateTime Name41 Name42
----------- ----------------------- ---------------- ----------------
[C:\JunkM\]
>>
****/