SET FMTONLY (Transact-SQL)SET FMTONLY (Transact-SQL)

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure даAzure Synapse Analytics (хранилище данных SQL) даParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Возвращает клиенту только метаданные.Returns only metadata to the client. Может использоваться для тестирования формата ответа без фактического выполнения запроса.Can be used to test the format of the response without actually running the query.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

SET FMTONLY { ON | OFF }   

RemarksRemarks

Когда FMTONLY является ON, возвращается набор строк с именами столбцов, но не строки данных.When FMTONLY is ON, a rowset is returned with the column names, but without any data rows.

SET FMTONLY ON не оказывает влияния при анализе пакета Transact-SQL.SET FMTONLY ON has no effect when the Transact-SQL batch is parsed. Эффект возникает во время выполнения.The effect occurs during execution run time.

Значение по умолчанию — OFF.The default value is OFF.

РазрешенияPermissions

Требуется членство в роли public.Requires membership in the public role.

ПримерыExamples

В следующем примере кода Transact-SQL FMTONLY задается как ON.The following Transact-SQL code example sets FMTONLY to ON. Этот параметр заставляет SQL Server возвращать только метаданные о выбранных столбцах.This setting causes SQL Server to return only metadata information about the selected columns. А именно, возвращаются имена столбцов.Specifically, the column names are returned. Строки данных не возвращаются.No data rows are returned.

В примере тестовое выполнение хранимой процедуры prc_gm29 возвращает следующее:In the example, the test execution of stored procedure prc_gm29 returns the following:

  • Несколько наборов строк.Multiple rowsets.
  • Столбцы из нескольких таблиц в одной из его инструкций SELECT.Columns from multiple tables, in one of its SELECT statements.
go
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\]
>>
****/

См. также:See Also

Инструкции SET (Transact-SQL)SET Statements (Transact-SQL)