Sql server “处理错误”;提供的数据源类型“不支持外部表”;在Azure SQL数据库中?

Sql server “处理错误”;提供的数据源类型“不支持外部表”;在Azure SQL数据库中?,sql-server,azure-sql-database,azure-storage-blobs,azure-blob-storage,Sql Server,Azure Sql Database,Azure Storage Blobs,Azure Blob Storage,根据,外部表现在可以在Azure SQL数据库上使用,具有Blob存储作为数据源 我能够按照下面的脚本创建主密钥、凭证和TYPE=BLOB_STORAGE的数据源,并注意到该版本不支持文件格式(不确定如何处理) 因此,我尝试创建一个外部表,其中一个字段为VARCHAR(MAX)。因此,我被以下错误消息困扰: Mensagem 46525,Nível 16,Estado 31,Linha 32 提供的数据源类型不支持外部表 这是我一直在使用的脚本: -- Cria uma chave mestra

根据,外部表现在可以在Azure SQL数据库上使用,具有Blob存储作为数据源

我能够按照下面的脚本创建主密钥、凭证和
TYPE=BLOB_STORAGE
的数据源,并注意到该版本不支持文件格式(不确定如何处理)

因此,我尝试创建一个外部表,其中一个字段为
VARCHAR(MAX)
。因此,我被以下错误消息困扰:

Mensagem 46525,Nível 16,Estado 31,Linha 32
提供的数据源类型不支持外部表

这是我一直在使用的脚本:

-- Cria uma chave mestra
CREATE MASTER KEY;
go

-- Cria credencial com a chave do Blob fsarquivo2 (essa é a chave)
CREATE DATABASE SCOPED CREDENTIAL AzureStorageCredential
WITH
    IDENTITY = 'user',
    SECRET = 'Q/rAy00000000000000000000000003Zo4RsxbIb57i2DoJTtU4JYQl1W5FDBIITapphJDRSv4OtniL3Dg=='
;

-- Aqui vc mostra onde fica a fechadura através da URI
CREATE EXTERNAL DATA SOURCE AzureStorage
WITH (
    TYPE = BLOB_STORAGE,
    LOCATION = 'wasbs://container0@fsblobstorage.blob.core.windows.net',
    CREDENTIAL = AzureStorageCredential
);


create external table luiz
(field varchar(MAX))
with
(
    DATA_SOURCE = AzureStorage,
    LOCATION = 'container0/terrcad.txt'
)

有人能帮我吗?

您所做的一切都是正确的,只是您试图从Blob存储中的数据源创建一个外部表,但这是不可能的。您不需要创建外部表,而需要使用大容量插入或OPENROWSET来访问文件并导入它

以下是使用批量/插入的示例:

BULK INSERT Product
FROM 'container0/terrcad.txt'
WITH ( DATA_SOURCE = 'AzureStorage');
使用批量插入

SELECT * FROM OPENROWSET(
   BULK 'inv-2017-01-19.csv',
   DATA_SOURCE = 'AzureStorage',
   FORMAT = 'CSV',
   FORMATFILE='invoices.fmt',
   FORMATFILE_DATA_SOURCE = 'MyAzureInvoices'
   ) AS DataFile;

有关更多信息,请访问文章。

什么是
发票。fmt
?在我的CSV场景中,blob存储中只有一个文件,如果我为
FORMATFILE
补充了一些内容,那么我会看到这个错误:
无法批量加载。文件“foo.fmt”不存在或您没有文件访问权限。
它是一个格式化文件。请阅读以下文档以了解如何创建格式文件: