无法在SQL中创建外部数据源

时间:2017-10-13 23:05:25

标签: sql sql-server azure azure-storage-blobs

我尝试创建外部数据源以访问Azure Blob存储。但是,我在创建实际数据源时遇到了问题。

我已按照此处的说明操作: Examples of bulk access to data in azure blob storageCreate external data source - transact sql。我在使用Windows身份验证的客户端计算机上通过SSMS访问的VM上使用SQL Server 2016而没有任何问题。说明说创建此外部数据源适用于SQL Server 2016和Azure Blob存储。

我创建了万能钥匙:

CREATE MASTER KEY ENCRYPTION BY PASSWORD = <password>

和,数据库作用域凭证

CREATE DATABASE SCOPED CREDENTIAL UploadCountries  
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = <key>;

我已通过查询sys.symmetric_keys和sys.database_scoped_credentials验证了数据库中存在的这两种情况。

但是,当我尝试执行以下代码时,它会在&#39; EXTERNAL&#39;

附近显示&#39;不正确的语法
CREATE EXTERNAL DATA SOURCE BlobCountries
WITH  (
    TYPE = BLOB_STORAGE,
    LOCATION = 'https://<somewhere>.table.core.windows.net/<somewhere>', 
    CREDENTIAL = UploadCountries  
);

感谢您的想法和帮助!

史蒂夫。

1 个答案:

答案 0 :(得分:1)

在“Examples of Bulk Access to Data in Azure Blob Storage”中,我们可以找到:

  

从SQL Server批量访问Azure blob存储,至少需要SQL Server 2017 CTP 1.1。

在“CREATE EXTERNAL DATA SOURCE (Transact-SQL)”的参数部分,我们可以找到类似的信息:

  

使用BULK INSERT或OPENROWSET与SQL Server 2017执行批量操作时使用BLOB_STORAGE

您正在使用SQL Server 2016,因此在为Azure Blob存储创建外部数据源时会出现Incorrect syntax near 'EXTERNAL'错误。