我尝试创建外部数据源以访问Azure Blob存储。但是,我在创建实际数据源时遇到了问题。
我已按照此处的说明操作: Examples of bulk access to data in azure blob storage和 Create 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
);
感谢您的想法和帮助!
史蒂夫。
答案 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'
错误。