When requesting row identifiers (IdentifierType SQL_BEST_ROWID), SQLSpecialColumns returns an empty result set (no data rows) for any requested scope other than SQL_SCOPE_CURROW. The generated result set indicates that the columns are only valid within this scope.
SQL Server does not support pseudocolumns for identifiers. The SQLSpecialColumns result set will identify all columns as SQL_PC_NOT_PSEUDO.
SQLSpecialColumns can be executed on a static cursor. An attempt to execute SQLSpecialColumns on an updatable (keyset-driven or dynamic) returns SQL_SUCCESS_WITH_INFO indicating the cursor type has been changed.
SQLSpecialColumns supports large CLR user-defined types (UDTs). For more information, see Large CLR User-Defined Types (ODBC).