我按照msdn(https://msdn.microsoft.com/en-us/library/dn935022.aspx)上的说明创建了一个外部表。这里的代码:SQL Server 2016通过polybase在azure blob存储上使用sql用户访问外部表 - 由于没有登录映射,拒绝访问
CREATE MASTER KEY ENCRYPTION BY PASSWORD = <password>;
CREATE DATABASE SCOPED CREDENTIAL BlobCredential
WITH
IDENTITY = <identity>,
SECRET = <secret key to access blob>
;
CREATE EXTERNAL DATA SOURCE BlobContainer
WITH
(
TYPE = HADOOP,
LOCATION = 'wasbs://<container>@<storageacc>.blob.core.windows.net',
CREDENTIAL = BlobCredential
);
CREATE EXTERNAL FILE FORMAT FlatFile WITH
(
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS
(
FIELD_TERMINATOR = '|', -- column delimiter
USE_TYPE_DEFAULT = TRUE
)
);
CREATE EXTERNAL TABLE [stg].[TestTable]
(
[...]
)
WITH
(
LOCATION='/Flat/',
DATA_SOURCE = BlobContainer,
FILE_FORMAT = FlatFile,
REJECT_TYPE = VALUE,
REJECT_VALUE = 1
);
它是Azure上的SQL Server虚拟机。如果我作为本地管理员连接到虚拟机并连接到SQL服务器实例,则可以从表中选择而不会出错。但是,如果我连接一个SQL用户(SQL身份验证,没有Windows身份验证),我无法访问该表。我收到以下错误:
Access to the remote server is denied because no login-mapping exists.
数据库作用域凭据我无法映射到sql登录名。正常凭据(无数据库范围的凭据)我无法使用它来创建外部数据源。
我也尝试在polybase core-site.xml中设置密钥([...]/MSSQL/Binn/Polybase/Hadoop/conf/core-site.xml),但它也适用于Windows身份验证(本地管理员)登录。
任何想法访问azure blob存储与SQL登录和没有Windows登录的外部表?
在此先感谢!
嗨, 如果我把用户放到“系统管理员”服务器角色,它的工作原理。其他角色不起作用。我使用不同的权限进行了测试(授予服务器级别的所有内容,但没有服务器角色,但它不起作用)。 将“etluser”放入sysadmin角色很糟糕^^ ...没有人有想法吗? 谢谢! – SeKoch