Поделиться через


NEWSEQUENTIALID (Transact-SQL)

Применимо к:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureБаза данных SQL в Microsoft Fabric

Создает идентификатор GUID, имеющий значение, большее любого идентификатора GUID, который был прежде создан на указанном компьютере при помощи этой функции с момента запуска Windows. После перезапуска Windows GUID может начаться снова из нижнего диапазона, но по-прежнему глобально уникальным. Если столбец GUID используется в качестве идентификатора строки, использование NEWSEQUENTIALID может быть быстрее, чем с помощью NEWID функции. Это связано с тем, что функция вызывает случайное NEWID действие и использует меньше кэшированных страниц данных. Использование NEWSEQUENTIALID также помогает полностью заполнить страницы данных и индексов.

Внимание

Если конфиденциальность является проблемой, не используйте эту функцию. Можно угадать значение следующего созданного GUID и, следовательно, получить доступ к данным, связанным с этим GUID.

NEWSEQUENTIALID — это оболочка через функцию Windows UuidCreateSequential с применением некоторых байтовых перетасовок.

Предупреждение

Функция UuidCreateSequential имеет аппаратные зависимости. В SQL Server кластеры последовательных значений могут разрабатываться при перемещении баз данных (таких как содержащиеся базы данных) на другие компьютеры. В Базе данных SQL Azure и при использовании AlwaysOn кластеры последовательных значений могут разрабатываться, если база данных выполняет отработку отказа на другой компьютер.

Соглашения о синтаксисе 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 уникальны на нескольких компьютерах, только если на исходном компьютере есть сетевая карта.