NEWSEQUENTIALID() не работает в SQL Server для Linux?

Я использую MS SQL Server для Linux из образа Docker ( https://hub.docker.com/r/microsoft/mssql-server-linux/)

Я обнаружил в моих файлах журнала, что в моей таблице журналов есть много нарушений PRIMARY KEY, которые имеют ID uniqueidentifier DEFAULT NEWSEQUENTIALID() колонка.

Исключение составляет:

Exception: System.Data.SqlClient.SqlException: 
Violation of PRIMARY KEY constraint 'PK_Logs'. 
Cannot insert duplicate key in object 'dbo.Logs'. 
The duplicate key value is (20c0423e-f36b-1410-8020-800000000000).

Как указано в документации

NEWSEQUENTIALID - это оболочка над функцией Windows UuidCreateSequential.

(источник: https://docs.microsoft.com/en-us/sql/t-sql/functions/newsequentialid-transact-sql)

Как это работает на Linux? Повреждено ли поведение, поскольку сгенерированные GUID должны быть уникальными, а они явно нет.

Шаги воспроизведения

  1. запустите образ докера mssql-server-linux docker run mssql-server-linux (обратитесь к https://hub.docker.com/r/microsoft/mssql-server-linux/ за подробностями)

  2. Создать таблицу CREATE TABLE SequentialIdTest(ID uniqueidentifier PRIMARY KEY DEFAULT NEWSEQUENTIALID(), ColA int );

  3. Вставить новую строкуINSERT INTO SequentialIdTest(ColA) VALUES (0);

  4. перезапустить образ докера docker restart {CONTAINER_NAME}

  5. Попробуйте вставить новую строку снова INSERT INTO SequentialIdTest(ColA) VALUES (0);

0 ответов

Другие вопросы по тегам