NEWSEQUENTIALID (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure
Создает идентификатор GUID, имеющий значение, большее любого идентификатора GUID, который был прежде создан на указанном компьютере при помощи этой функции с момента запуска Windows. После перезагрузки Windows идентификатор GUID может вновь начинаться с более низкого диапазона, однако останется глобально уникальным. Если столбец GUID используется в качестве идентификатора строки, использование NEWSEQUENTIALID может ускорить работу по сравнению с использованием функции NEWID, поскольку функция NEWID вызывает непредсказуемый уровень нагрузки и использует меньшее число кэшированных страниц данных. Использование NEWSEQUENTIALID также помогает полностью заполнять страницы данных и страницы индекса.
Внимание
Если важна конфиденциальность, то не следует применять эту функцию. Значение следующего формируемого идентификатора GUID можно предугадать и, следовательно, получить доступ к данным, связанным с этим идентификатором GUID.
NEWSEQUENTIALID является оболочкой для функции Windows UuidCreateSequential с применением случайной перестановки байт.
Предупреждение
У функции UuidCreateSequential есть аппаратные зависимости. В SQL Server кластеры последовательных значений могут разрабатываться при перемещении баз данных (таких как содержащиеся базы данных) на другие компьютеры. При использовании AlwaysOn и на База данных SQL кластеры последовательных значений могут разрабатываться, если база данных выполняет отработку отказа на другой компьютер.
Соглашения о синтаксисе 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, становятся уникальными для нескольких компьютеров, только если в компьютере-источнике имеется сетевая плата.