Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server
База данных
SQL AzureУправляемый экземпляр
SQL AzureБаза данных SQL в Microsoft Fabric
Возвращает оптимальный набор столбцов, уникально идентифицирующих строку таблицы. Также возвращает столбцы, автоматически обновляемые, когда любое значение в строке обновляется транзакцией.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_special_columns
[ @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 ]
[ ; ]
Аргументы
[ @table_name = ] N'table_name'
Имя таблицы, используемой для возврата сведений о каталоге. @table_name — sysname без значения по умолчанию. Сопоставление шаблонов подстановочных знаков не поддерживается.
[ @table_owner = ] N'table_owner'
Владелец таблицы, используемой для возврата сведений о каталоге.
@table_owner — sysname с значением по умолчаниюNULL. Сопоставление шаблонов подстановочных знаков не поддерживается. Если @table_owner не задано, применяются правила видимости таблиц по умолчанию базовой системы управления базами данных (СУБД).
В SQL Server, если текущий пользователь владеет таблицей с указанным именем, возвращаются столбцы этой таблицы. Если @table_owner не указан, а текущий пользователь не владеет таблицей указанного @table_name, эта процедура ищет таблицу указанного @table_name , принадлежащей владельцу базы данных. Если таблица существует, возвращаются ее столбцы.
[ @table_qualifier = ] N'table_qualifier'
Имя квалификатора таблицы.
@table_qualifier имеет имя sysname с значением по умолчаниюNULL. Различные продукты СУБД поддерживают трехкомпонентное именование таблиц (<qualifier>.<owner>.<name>). В SQL Server этот столбец представляет имя базы данных. В некоторых СУБД он представляет имя сервера в среде базы данных, в которой находится таблица.
[ @col_type = ] 'col_type'
Тип столбца.
@col_type — char(1) с значением по умолчаниюR.
Тип
Rвозвращает оптимальный столбец или набор столбцов, которые путем извлечения значений из столбца или столбцов позволяют однозначно определить любую строку в указанной таблице. Столбец может быть псевдокумун, предназначенный для этой цели, или столбец или столбцы любого уникального индекса для таблицы.Тип
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 для ODBC SQLSpecialColumns версии 3.0.
Значения кода возврата
Нет.
Результирующий набор
| Имя столбца | Тип данных | Description |
|---|---|---|
SCOPE |
smallint | Фактическая область идентификатора строки. Возможные значения: 0, 1 или 2. SQL Server всегда возвращается 0. Это поле всегда возвращает значение.0 = SQL_SCOPE_CURROW. Идентификатор строки гарантированно действителен до тех пор, пока он расположен на этой строке. В дальнейшем повторное выделение с помощью идентификатора строки может не возвращать строку, если строка была обновлена или удалена другой транзакцией.1 = SQL_SCOPE_TRANSACTION. Идентификатор строки гарантируется допустимым в течение текущей транзакции.2 = SQL_SCOPE_SESSION. Идентификатор строки гарантированно действителен на протяжении сеанса (несмотря на границы транзакций). |
COLUMN_NAME |
sysname | Имя столбца для каждого столбца возвращаемого @table_name . Это поле всегда возвращает значение. |
DATA_TYPE |
smallint | Тип данных ODBC SQL. |
TYPE_NAME |
sysname | Имя типа данных, зависящей от источника данных; например, char, varchar, money или text. |
PRECISION |
int | Точность столбца на источнике данных. Это поле всегда возвращает значение. |
LENGTH |
int | Длина в байтах, необходимая для типа данных в двоичной форме в источнике данных, например 10 для char(10), целочисленного числа и 4 для 2. |
SCALE |
smallint | Масштаб столбца в источнике данных.
NULL возвращается для типов данных, для которых масштаб не применяется. |
PSEUDO_COLUMN |
smallint | Указывает, является ли столбец псевдостолбцом. SQL Server всегда возвращает:10 = SQL_PC_UNKNOWN1 = SQL_PC_NOT_PSEUDO2 = SQL_PC_PSEUDO |
Замечания
sp_special_columns эквивалентен SQLSpecialColumns в ODBC. Возвращаемые результаты упорядочены по SCOPE.
Разрешения
Требуется SELECT разрешение на схему.
Примеры
Следующий пример возвращает данные о столбце, которые уникально идентифицируют строки в таблице HumanResources.Department.
USE AdventureWorks2022;
GO
EXECUTE sp_special_columns
@table_name = 'Department',
@table_owner = 'HumanResources';