Azure SQL数据库:创建表时,'NEWSEQUENTIALID'不是可识别的内置函数名称

时间:2017-01-30 10:56:41

标签: azure azure-sql-database azure-sqldw

我正在尝试在Azure SQL DB上创建一个具有以下语法的表,并且它会抛出以下错误。

任何人都可以告诉我为什么不允许在这里使用NEWSEQUENTIALID()。当我在内部部署服务器上创建相同的内容时,它的工作正常。

是否有替换NEWSEQUENTIALID()。?

表:

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

错误:

  

Msg 104162,Level 16,State 1,Line 1   'NEWSEQUENTIALID'不是公认的内置函数名称。

1 个答案:

答案 0 :(得分:2)

Azure SQL数据仓库目前不支持NEWSEQUENTIALID,如Unsupported system functions部分所述:

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

如果您真的需要此功能,请考虑在此处提出功能请求:

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

但是,除此之外,我不确定为什么你会在分布式系统中想要这些 - 它们没有意义。在Azure SQL数据仓库中,您要按ROUND_ROBIN分发,在这种情况下,顺序的GUID是无关紧要的,或者HASH在列上;无法保证散列算法在哈希值时将所谓的顺序GUID保持在一起。作为一种解决方法,您可以在普通SQL Server框中预先生成几十亿个,然后将它们导入DW以供以后使用。