sp_special_columns_100 (Azure Synapse Analytics)

適用対象:Azure Synapse AnalyticsAnalytics Platform System (PDW)

テーブル内の行を一意に識別する最適な列セットを返します。 また、行の値がトランザクションによって更新されると、自動的に更新される列も返されます。

Transact-SQL 構文表記規則

構文

Azure Synapse Analytics と Parallel Data Warehouse の構文。

sp_special_columns_100
    [ @table_name = ] N'table_name'
    [ , [ @table_owner = ] N'table_owner' ]
    [ , [ @table_qualifier = ] N'table_qualifier' ]
    [ , [ @col_type = ] 'col_type' ]
    [ , [ @scope = ] 'scope' ]
    [ , [ @nullable = ] 'nullable' ]
    [ , [ @ODBCVer = ] ODBCVer ]
[ ; ]

Note

この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。

引数

[ @table_name = ] N'table_name'

カタログ情報を返すために使用するテーブルの名前。 @table_nameは sysname で、既定値はありません。 ワイルドカード パターン マッチングはサポートされていません。

[ @table_owner = ] N'table_owner'

カタログ情報を返すために使用されるテーブルのテーブル所有者。 @table_ownerは sysname で、既定値は NULL. ワイルドカード パターン マッチングはサポートされていません。 @table_ownerが指定されていない場合は、基になるデータベース管理システム (DBMS) の既定のテーブル可視性ルールが適用されます。

SQL Server では、指定した名前のテーブルを現在のユーザーが所有している場合、そのテーブルの列が返されます。 @table_ownerが指定されておらず、現在のユーザーが指定した@table_nameのテーブルを所有していない場合、このプロシージャは、データベース所有者が所有する指定した@table_nameのテーブルを検索します。 テーブルが存在する場合は、その列が返されます。

[ @table_qualifier = ] N'table_qualifier'

テーブル修飾子の名前。 @table_qualifierは sysname で、既定値は NULL. さまざまな DBMS 製品では、テーブルの 3 部構成の名前付け (<qualifier>.<owner>.<name>) がサポートされています。 SQL Server では、この列はデータベース名を表します。 一部の製品では、テーブルのデータベース環境のサーバー名を表します。

[ @col_type = ] 'col_type'

列の種類。 @col_typeは char(1) で、既定値は R.

  • Type R は、列または列から値を取得することで、指定したテーブル内の任意の行を一意に識別できる最適な列または列のセットを返します。 列には、この目的のために設計された疑似列、またはテーブルの一意のインデックスの列または列を指定できます。

  • Type V は、指定されたテーブル内の列 (存在する場合) を返します。この列は、行の値がトランザクションによって更新されたときにデータ ソースによって自動的に更新されます。

[ @scope = ] 'scope'

ROWID の最低限必要なスコープ。 @scopeは char(1) で、既定値は T.

  • スコープ C は、ROWID がその行に配置されている場合にのみ有効であることを指定します。
  • スコープ T は、ROWID がトランザクションに対して有効であることを指定します。

[ @nullable = ] 'nullable'

特殊列が値を受け取 NULL ることができるかどうかを指定します。 @nullableは char(1) で、既定値は U.

  • O は、null 値を許可しない特殊な列を指定します。
  • U は、部分的に null 許容の列を指定します。

[ @ODBCVer = ] ODBCVer

使用されている ODBC バージョン。 @ODBCVerは int で、既定値は 2. この値は、ODBC バージョン 2.0 を示します。 ODBC バージョン 2.0 と ODBC バージョン 3.0 の違いの詳細については、ODBC バージョン 3.0 の ODBC SQLSpecialColumns 仕様を参照してください。

リターン コードの値

なし。

結果セット

列名 データ型 説明
SCOPE smallint 行 ID の実際のスコープ。 01、または 2 を指定できます。 SQL Server は常に返します 0。 このフィールドには常に値が返されます。

0 = SQL_SCOPE_CURROW. 行 ID は、その行に配置されている間のみ有効であることが保証されます。 行が別のトランザクションによって更新または削除された場合、行 ID を使用して後で再選択しても行が返されない場合があります。
1 = SQL_SCOPE_TRANSACTION. 行 ID は、現在のトランザクションの期間中有効であることが保証されます。
2 = SQL_SCOPE_SESSION. 行 ID は、セッションの期間中 (トランザクション境界を越えて) 有効であることが保証されます。
COLUMN_NAME sysname 返される@table_name各列の列名。 このフィールドには常に値が返されます。
DATA_TYPE smallint ODBC SQL データ型。
TYPE_NAME sysname データ ソースに依存するデータ型名。たとえば、char、varcharmoney、text などです。
PRECISION int データ ソースの列の有効桁数。 このフィールドには常に値が返されます。
LENGTH int データ ソース内のバイナリ形式のデータ型 (char(10)4、整数210smallint など) に必要な長さ (バイト単位)。
SCALE smallint データ ソースの列のスケール。 NULL は、スケールが適用されないデータ型に対して返されます。
PSEUDO_COLUMN smallint その列が疑似列であるかどうかを示します。 SQL Server は常に次を返します 1

0 = SQL_PC_UNKNOWN
1 = SQL_PC_NOT_PSEUDO
2 = SQL_PC_PSEUDO

解説

sp_special_columns は ODBC の場合と SQLSpecialColumns 同じです。 返される結果は次の順序で SCOPE並べ替えます。

アクセス許可

スキーマに対する SELECT アクセス許可が必要です。

例: Azure Synapse Analytics、Analytics Platform System (PDW)

次の例では、データベース内のテーブル内の行を一意に識別する列に関する情報をFactFinanceAdventureWorks返します。

EXEC sp_special_columns_100 @table_name = 'FactFinance';