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

適用対象: ○SQL Server ○Azure SQL Database ○Azure SQL Data Warehouse ○Parallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database yesAzure SQL Data Warehouse 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-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

SET FMTONLY { ON | OFF }   

RemarksRemarks

FMTONLYON のとき、行セットは列名と共に返されますが、データ行なしになります。When FMTONLY is ON, a rowset is returned with the column names, but without any data rows.

Transact-SQL バッチが解析されるとき、SET FMTONLY ON からは何の影響も出ません。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 コード例では FMTONLYON に設定されます。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 ステートメントの 1 つで、複数のテーブルからの列。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)