我正在尝试在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'不是公认的内置函数名称。
答案 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以供以后使用。