NEWSEQUENTIALID() (Transact-SQL)
Создает идентификатор GUID, имеющий значение, большее любого идентификатора GUID, который был прежде создан на указанном компьютере при помощи этой функции с момента запуска Windows. После перезагрузки Windows идентификатор GUID может вновь начинаться с более низкого диапазона, однако останется глобально уникальным. Если столбец GUID используется в качестве идентификатора строки, использование NEWSEQUENTIALID может ускорить работу по сравнению с использованием функции NEWID. поскольку функция NEWID вызывает непредсказуемый уровень нагрузки и использует меньшее число кэшированных страниц данных. Использование NEWSEQUENTIALID также помогает полностью заполнять страницы данных и страницы индекса.
Важно! |
---|
Если важна конфиденциальность, то не следует применять эту функцию. Значение следующего формируемого идентификатора GUID можно предугадать и, следовательно, получить доступ к данным, связанным с этим идентификатором GUID. |
NEWSEQUENTIALID является оболочкой для функции Windows UuidCreateSequential.
Синтаксические обозначения в Transact-SQL
Синтаксис
NEWSEQUENTIALID ( )
Тип возвращаемых данных
uniqueidentifier
Замечания
Функция NEWSEQUENTIALID() может быть использована только для ограничений DEFAULT для столбцов таблицы типа uniqueidentifier. Например:
CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT NEWSEQUENTIALID())
Когда функция NEWSEQUENTIALID() используется в выражениях DEFAULT, она не может быть объединена с другими скалярными операторами. Например, нельзя выполнить следующее:
CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT dbo.myfunction(NEWSEQUENTIALID()))
В предыдущем примере myfunction() является пользовательской скалярной функцией, которая принимает и возвращает значение uniqueidentifier.
На функцию NEWSEQUENTIALID() нельзя ссылаться в запросах.
Функцию NEWSEQUENTIALID() можно использовать для формирования идентификаторов GUID, чтобы уменьшить состязание страниц на конечном уровне индексов.
Каждый идентификатор GUID, сформированный с помощью функции NEWSEQUENTIALID(), является уникальным на данном компьютере. Идентификаторы GUID, сформированные с помощью функции NEWSEQUENTIALID(), становятся уникальными для нескольких компьютеров, только если в компьютере-источнике имеется сетевая плата.