U-SQL外部表错误:“无法将类型为“ System.DBNull”的对象转换为类型为“ System.Type”。”

时间:2019-05-15 07:17:21

标签: azure-sql-database azure-data-lake u-sql

我无法从Azure SQL DB创建到两个特定表的外部表,

我已经创建了几个没有问题的外部表。 我可以看到失败的外部表和成功的外部表之间的唯一区别是,失败的表包含地理位置类型列,因此我认为这是问题所在,但我不确定。

CREATE EXTERNAL TABLE IF NOT EXISTS [Data].[Devices]
(
    [Id] int
)
FROM SqlDbSource LOCATION "[Data].[Devices]";
Failed to connect to data source: 'SqlDbSource', with error(s): 'Unable to cast object of type 'System.DBNull' to type 'System.Type'.'

2 个答案:

答案 0 :(得分:1)

我通过对外部表进行变通来解决了该问题: 我使用EXECUTE创建了一个viewselect from external rowset

CREATE VIEW IF NOT EXISTS [Data].[Devices]
AS 
SELECT Id FROM EXTERNAL SqlDbSource 
EXECUTE "SELECT Id FROM [Data].[Devices]";

这使脚本完全忽略了地理位置类型列,U-SQL目前不支持该列为REMOTEABLE_TYPE for data sources

答案 1 :(得分:0)

请查看我在您打开的另一个线程上的回答。除此之外,我还建议您看看如何使用查询创建表。在查询中,您应该能够在查询中使用“提取器”来创建表。要了解有关提取器的更多信息,请查看此文档。

希望这会有所帮助。