1

我是 Azure 的新手,我在 Azure SQL 数据仓库的表中有这个字段:

[AnnotationText] varchar(MAX) NULL,

根据我从https://docs.microsoft.com/en-us/sql/t-sql/data-types/char-and-varchar-transact-sql?view=sql-server-2017阅读的内容:

  • varchar [ ( n | max ) ] 可变大小的字符串数据。使用 n 以字节为单位定义字符串大小,可以是 1 到 8,000 之间的值,或者使用 max 来指示列约束大小,最大存储空间为 2^31-1 字节 (2 GB)。

但我看到的是 8000 的大小和这种类型的错误消息:

Too long string in column [-1]: Actual len = [11054]. MaxLEN=[8000]

我尝试对大小进行硬编码,但任何大于 8000 的数字都无法按照文档中的说明工作。

我还发现一些文档说应该在表创建中使用 HEAP 或 CLUSTERED INDEX 类型,但它也没有帮助

知道出了什么问题吗?

4

2 回答 2

1

我正在使用 Databricks 使用 Polybase 将数据插入 Azure DW (Synapse)。我的数据集中有一个 nvarchar(500) 列,但它未能遇到同样的问题。我发现在我的情况下,断点在 255 到 300 个字符之间。我最终只是将该列子串化为 250 个字符,因为内容对于报告目的并不重要。

于 2019-11-18T09:53:54.083 回答
1

Polybase 不支持(最大)数据类型的ADF文档。

一种常用的技术是在 ADF 中拆分文件,使用 Polybase 批量加载 LOB 数据,然后另一种技术是稍后添加 LOB 数据。另一种更快的技术是使用 ADF 拆分,并在摄取点使用分层在外部表上的视图重新组合它。

更好的方法可能是质疑为什么数据仓库中需要 LOB 数据。是否有可以使用的替代方法,具体取决于 LOB 的类型?例如,如果 LOB 表示一个文档,是否可以通过 DW 表中的链接将其外部化到 blob 存储?

于 2019-08-10T01:43:14.343 回答