База данных SQL Azure: NEWSEQUENTIALID не является распознанным именем встроенной функции при создании таблицы.

Я пытаюсь создать таблицу с приведенным ниже синтаксисом в базе данных SQL Azure, и это вызывает ошибку, указанную ниже.

Может ли кто-нибудь сказать мне, почему здесь нельзя использовать NEWSEQUENTIALID (). Когда я создаю то же самое на локальном сервере, он работает нормально.

Есть ли замена NEWSEQUENTIALID ().?

Стол:

CREATE TABLE #SampleTable
  (  
   StoreGUID UNIQUEIDENTIFIER  DEFAULT (NEWSEQUENTIALID()),   
   AddressGUID  UNIQUEIDENTIFIER DEFAULT (NEWSEQUENTIALID()) 
  )  

Ошибка:

Сообщение 104162, уровень 16, состояние 1, строка 1 «NEWSEQUENTIALID» не является распознанным именем встроенной функции.


person ravi kiran    schedule 30.01.2017    source источник


Ответы (1)


Хранилище данных SQL Azure не поддерживает NEWSEQUENTIALID в настоящее время, как описано здесь в Неподдерживаемые системные функции:

https://docs.microsoft.com/en-us/azure/sql-data-warehouse/sql-data-warehouse-migrate-code

Если вам действительно нужна эта функция, рассмотрите возможность запроса функции здесь:

https://feedback.azure.com/forums/307516-sql-data-warehouse

Но в стороне, я не уверен, зачем вам это нужно в распределенной системе - они не имеют смысла. В хранилище данных SQL Azure вы либо распределяете по ROUND_ROBIN, и в этом случае последовательный GUID не имеет значения, либо HASH по столбцу; Нет гарантии, что алгоритм хеширования сохранит ваши предположительно последовательные GUID вместе после хеширования. В качестве обходного пути вы можете предварительно сгенерировать, скажем, несколько миллиардов из них на обычном сервере SQL Server и импортировать их в свой DW для использования позже.

person wBob    schedule 30.01.2017