Azure SQL中的Blob存储中的外部表(非Azure SQL DW)

时间:2017-09-05 18:01:43

标签: azure-sql-database azure-sql-server

这是我尝试在Azure SQL数据库中运行的脚本:

CREATE DATABASE SCOPED CREDENTIAL some_cred WITH IDENTITY = user1,   
    SECRET = '<Key of Blob Storage container>';  
CREATE EXTERNAL DATA SOURCE TEST
WITH
(
    TYPE=BLOB_STORAGE,
    LOCATION='wasbs://<containername>@accountname.blob.core.windows.net',
    CREDENTIAL= <somecred>`enter code here`
);

CREATE EXTERNAL TABLE dbo.test
(
val VARCHAR(255)
)
WITH
(
DATA_SOURCE = TEST
)

我收到以下错误:

  

提供的数据源类型不支持外部表。

我的目标是在blob存储中创建外部表,以便HDInsight中的Hive查询引用相同的blob。该表需要通过Azure SQL进行管理。这个脚本有什么问题?

2 个答案:

答案 0 :(得分:2)

Azure SQL数据库确实具有加载存储在Blob存储中的文件的功能,但它只能通过BULK INSERTOPENROWSET语言功能加载。有关详细信息,请参阅here

BULK INSERT dbo.test
FROM 'data/yourFile.txt'
WITH ( DATA_SOURCE = 'YourAzureBlobStorageAccount');

您编写脚本的方式更像是使用Polybase的外部表,此表仅在SQL Server 2016和Azure SQL数据仓库中可用。

答案 1 :(得分:1)

我认为外部表可以用于跨数据库查询(弹性查询)。所以它无法使用 BLOB_STORAGE

的外部数据源