Использование системных функций
Системные функции открывают доступ к данным системных таблиц SQL Server без непосредственного доступа к системным таблицам.
Имена некоторых системных функций в языке Transact-SQL начинаются с двух символов «@» (@@). Хотя в предыдущих версиях SQL Server обращение к @@-функциям производилось как к глобальным переменным, они не являются переменными и ведут себя иначе. @@-функции являются системными функциями, и синтаксис их использования стандартен для функций.
Каждая из следующих пар системных функций для баз данных, узлов, объектов, имен входа и пользователей возвращает имя при заданном идентификаторе (ID) и возвращает идентификатор при заданном имени:
DB_ID и DB_NAME
HOST_ID и HOST_NAME
OBJECT_ID и OBJECT_NAME
SUSER_ID и SUSER_NAME (или SUSER_SID и SUSER_SNAME)
USER_ID и USER_NAME
Например, для получения идентификационного номера базы данных используется функция DB_ID вместо инструкции SELECT для таблицы sysobjects.
В следующем примере показано получение имени текущего пользователя, вошедшего в систему, с помощью проверки подлинности SQL Server:
SELECT SUSER_NAME();
Следующие функции похожи между собой, но они не входят во взаимодополняющие пары и принимают более одного входного параметра:
COL_LENGTH
Возвращает длину столбца, но не длину отдельных строк, хранящихся в столбце. Для определения общего числа символов в конкретном значении используется функция DATALENGTH.
Следующий пример возвращает длину столбца и длину данных в столбце LastName таблицы Employees:
SELECT COL_LENGTH('Employees', 'LastName') AS Col_Length, DATALENGTH(LastName) AS DataLength FROM Employees WHERE EmployeeID > 6;
COL_NAME
Возвращает имя столбца.
INDEX_COL
Возвращает имя индексного столбца.
Рекомендуется использовать системные функции, представления информационной схемы или системные хранимые процедуры для получения сведений о системе вместо прямых запросов к системным таблицам. Системные таблицы от версии к версии SQL Server могут существенно различаться.
См. также